题目:一个正整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
下面是本人新手写的代码。
//一个正整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
#include<math.h>
#include<stdio.h>
int perfect_square(int);
int main(void){
int i,j,k;
for(i=1;;i++){
if((j=perfect_square(i+100))&&(k=perfect_square(i+168))){
printf("%d %d \n",j,k);
break;
}
}
printf("%d",i);
return 0;
}
int perfect_square(int x){
int i;
for(i=1;i*i<=x;i++){
if(i*i==x){
return i;
}
}
return 0;
}
对比一下高手写的代码,代码来源是http://www.runoob.com/cprogramming/c-exercise-example3.html
#include <stdio.h>
#include "math.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("\n%ld\n",i);
}
}
}