C语言中如何判断一个数是完全平方数
(要输出的是1000以内的数)
可是就是不得,我的程序如下:(跪求完整程序,谢谢了!!!)
#include<stdio.h>
#include<math.h>
int main()
{ int i,a,d;
double b,c,x,y;
for (i=1;i<=1000;i++)
{
a=i+100;
b=sqrt(a);
c=b*b;
if(c==a)
{
d=168+a;
x=sqrt(d);
y=x*x;
if(y==d)
printf("%d ",i);
}
}
return 0;
} 展开
#include<stdio.h>
#include<math.h>
int IsSquare(int n)
{
int i,a=0;
for(i=1;i*i<=n;i++)
{
if(i*i==n)
{
a=1;
break;
}
}
return a;
}
int main()
{
int n,a;
scanf("%d",&n);
a=IsSquare(n);
if(a)
{
printf("YES");
}
else
printf("NO");
return 0;
}
扩展资料:
scanf函数最主要的用法是:
scanf("输入控制符",输入参数);
功能:将从键盘输入的字符转化为“输入控制符”所规定格式的数据,然后存入以输入参数的值为地址的变量中。
用scanf()函数以%s格式读入的数据不能含有空白符时,所有空白符都被当做数据结束的标志。所以题中函数输出的值只有空格前面的部分。
如果想要输出包括空格在内的所有数据,可以使用gets()函数读入数据。gets()函数的功能是读取字符串,并存放在指定的字符数组中,遇到换行符或文件结束标志时结束读入。换行符不作为读取串的内容,读取的换行符被转换为字符串结束标志'\0'。
#include<stdio.h>
#include<math.h>
int main() {
long int i,x,y;
printf("完全平方数:\n");
for(i=1;i<1000;i++)
{
x=sqrt(i+100); /*x为加上100后开方后的结果*/
y=sqrt(i+268); /*y为再加上168后开方后的结果*/
if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/
printf("\n%ld\n",i);
}
}
扩展资料:
C语言需要说明的是:
1、一个C语言源程序可以由一个或多个源文件组成。
2、每个源文件可由一个或多个函数组成。
3、一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。是整个程序的入口。
4、源程序中可以有预处理命令(包括include 命令,ifdef、ifndef命令、define命令),预处理命令通常应放在源文件或源程序的最前面。
5、每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。结构体、联合体、枚举型的声明的“}”后要加“ ;”。
6、标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。
参考资料:
对于一个比较大的整数,比如:23916,一共有5位数字,假设它是完全平方数,那么它的平方根应该是一个3位数,因为100的平方是最小的5位数。
同时,这个平方根应该小于200,因为200的平方是40000比原数大。取个中间数150,因为已知15的平方是225,所以很容易算出150的平方是22500,比原数小。
同理,算出160的平方是25600,比原数大。所以,如果24346时一个完全平方数,它的平方根应该大于150且小于160。完全平方数,凡是个位为6的,其平方根个位必为4或6。
计算154的完全平方,等于 23716 比 23916 小200,计算156的完全平方,等于 24336 比 23916 大420,所以23916不是完全平方数。
扩展资料
应用:
有多少个正整数n,使n!+2019是完全平方数,注:n!=1*2*…*n,即n的阶乘。
讲解思路:这道题属于完全平方数问题,要判断一个数是完全平方数,除了严格验证外,目前还没有完善的方法。但要判断一个数不是完全平方数,有很多种性质可以用,
这里采用除以4的余数来判别。由于n!具有十分特别的性质,因此总的解题思路是:先判断当n>=4时的情况,然后对n<4时的3个数逐一验证。
步骤1:
先思考第一个问题,
当n大于等于4时,
n!+2019除以4的余数是多少。
此时n!=1*2*3*4…*n,
故n!是4的整数倍,
而2019除以4的余数是3,
因此n!+2019除以4的余数是3。
步骤2:
再思考第二个问题,
当n大于等于4时,
n!+2019可能是完全平方数吗。
此时n!+2019是奇数,
如果它是完全平方数,
则存在某自然数k,
使n!+2019=(2k+1)^2
=4k^2+4k+1,
显然该数除以4的余数为1,
这与步骤1的结论想矛盾,
因此不是完全平方数。
注:k^2表示k的平方。
步骤3:
再思考第三个问题,
考虑原题目的答案。
从步骤2直到n小于4,
下面对n=1,2,3分别讨论:
当n=1时,
n!+2019=2020不是完全平方数;
当n=2时,
n!+2019=2021不是完全平方数;
当n=3时,
n!+2019=2025=45^2,
是完全平方数。
所以原题的答案只有n=3。