題目:一個正整數,它加上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);
}
}
}