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);
        }
    }
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章