用C语言怎么写这个代码

img


有没有大神教一下我这用C语言怎么去
求? 有没有大神教一下我这用C语言怎么去
求? 有没有大神教一下我这用C语言怎么去
求?

供参考:

#include <math.h>
#include <stdio.h>
int main()
{
    long int i, x, y;
    for (i = 1; i < 100000; i++)
    {
        x = sqrt(i + 100); //x为加上100后开方后的结果
        y = sqrt(i + 268); //y为再加上168后开方后的结果
        if (x * x == i + 100 && y * y == i + 268) 
        //如果一个数的平方根的平方等于该数,这说明此数是完全平方数
            printf("%ld\n", i);
    }
    return 0;
}

设加100后的平方根为x,再加168后的平方根为y,设原数为z,可知y>x
有 yy - xx = (z +100+168)-(z+100)
得出
yy - xx = 168
即(y+x )(y-x)=168,又x+y>y -x>0
再根据168的因数特性和前面条件,可以很快搜索得出x,y ,从而得出z=1581,261,21,-99

当然楼上的直接搜索也是可以的,但边界条件的得出是没有根据的,比如它就没有得出-99这个答案。根据前面的一些信息,z+100>0,z +268<=168*168

#include <math.h>
#include <stdio.h>
int main()
{
    long int i, x, y;
    for (i =- 100; i <=168*168-268; i++)
    {
        x = sqrt(i + 100); //x为加上100后开方后的结果
        y = sqrt(i + 268); //y为再加上168后开方后的结果
        if (x * x == i + 100 && y * y == i + 268) 
        //如果一个数的平方根的平方等于该数,这说明此数是完全平方数
            printf("%ld\n", i);
    }
    return 0;
}