c语言编程实现:一个整数,它加上100后是完全平方数,再加168又是完全平方数,求该数。

高手帮帮忙,还有追加!谢谢了!

代码:

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#define maxSize 100000

int main()

{

    long int i,x,y; 

    for(i = -100;i <= maxSize;++i)

    {

        x = sqrt(i+100);

        y = sqrt(i+268);//再加上168,即i+100+168 

        if((x*x == i + 100)&&(y*y == i+268))

            printf("%ld\t",i);

    } 

    return 0;

}

扩展资料:    

c语言判断完全平方数

#include<stdio.h>

#include<math.h>

int main()

{

int n;

scanf("%d",&n);

if(sqrt(n)==(int)sqrt(n))

printf("是完全平方数");

else

printf("不是完全平方数");

return 0; 

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2020-11-13

一个正整数,分别加上100和168,得到的2个数都是完全平方数,求这个正整数。

第2个回答  推荐于2017-12-15
问题:一整数,它加100后是完全平方数,再加168还是完全平方数,求该整数

解题思路:设该数为x,它加100后是A,再加168为B。
则因为A是完全平方数,
所以A为正数,且A=y*y,y为正整数或0。
同理,B为正数,B=z*z,z为正整数。

因为B=A+168>A,所以,我们可设z=y+n,n为正整数,n>0。

由B=A+168,有:(y+n)(y+n)=y*y+168,即:y=84/n-n/2。
又y为正整数,所以84/n-n/2≥0,则得出n≤13

所以,编程时可用的条件有:
0<n≤13
y=84/n-n/2
x=y*y-100,当y为整数时,就是符合题目的y。

*/

#include <stdio.h>

int main()
{
int n,x;
float y;
for(n=1;n<=13;n++)
{
y=84.0/n-n/2.0;
//这里用84.0和2.0,是因为整数用“/”时,结果会取整,用这种浮点型数才不会直接取整数。
if(int(y) == y)//当y是一个整数时,求出对应x,并输出。
{
x=int(y*y-100);
printf("%d\n",x);
}
}
return 0;
}
//此程序还可扩展为更一般化的算法本回答被提问者采纳
第3个回答  2009-12-24
这个问题其实关键就在于你要判断加上100或是再加168后开方完他是个整数,只要是个整数就没问题,所以关键就是判断一个数是不是整数。
思路大概这样:用该数减去对该数取整(可直接用强制类型转换),差和一个极小数(比如e的-6次方)进行比较,如果小于这个极小数我们就近似地认为这个数是一个整数。
思路给你写了,懂的话自己把程序写写,自己写才有印象
第4个回答  2021-03-24
sqt出来的数自动是double的,要强制转换为int的,我看了他们的回答应该都运行不出来吧
#include <stdio.h>
#include <math.h>

void main()
{

int i, x, y;

for(i=1; i<=100000; i++)
{
x = (int)sqrt(i+100);
y = (int)sqrt(i+268);

if((x*x == i+100) && (y*y == i+268))
{
printf("%d\n",i);
}
}
}
相似回答