题干:
一个小于10000的正整数,它加上100后是一个完全平方数,它加上268又是一个完全平方数,请问该数是多少?输出所有这样的数字。要求用for循环完成。注:若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数,例如4=2*2,9=3*3,25=5*5
解题要求:注意输出的顺序,影响评分。
分析题意,可知要用两重循环外多次if判断完成 ,须得掌握循环之中break的用法方可解题
#include<stdio.h>
int main()
{
int i,x,y,j,p;
for(i = 0; i < 10000 ;i++)
{
x = i + 100; //加值100
y = i + 268; //加值268
for(j = 10 ; j < x/2 ; j++) //此处从10开始,对应加值100;x/2作为终止值减少循环次数
{
if(j * j == x)
{
break; //若在小于其自身一半的值中存在平方后等于自身的值,则提前结束循环
} //即 j != x/2
}
if( j != x/2) //先满足加值100完全平方才可进入加值268的判断
{
for(p = 16 ; p < y/2 ; p++) //从16开始,对应加值268
{
if(p * p == y)
{
break;
}
}
if(p != y/2) //同理对加值268进行判断
{
printf("%d\n",i); //同时满足两个if判断,输出符合题意的值
}
}
}
return 0;
}
欢迎大家批评指正嗷