C语言编程100例:3

题目:一个正整数,它加上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);
        }
    }
}



猜你喜欢

转载自blog.csdn.net/u014128662/article/details/68961238