【程序3】
题目:一个整数,它加上100后是一个全然平方数。再加上168又是一个全然平方数。请问该数是多少?
1.程序分析:在10万以内推断。先将该数加上100后再开方,再将该数加上268后再开方,假设开方后的结果满足例如以下条件,即是结果。请看详细分析:
2.程序源码:
题目:一个整数,它加上100后是一个全然平方数。再加上168又是一个全然平方数。请问该数是多少?
1.程序分析:在10万以内推断。先将该数加上100后再开方,再将该数加上268后再开方,假设开方后的结果满足例如以下条件,即是结果。请看详细分析:
2.程序源码:
#include "math.h" #include "stdio.h" #include "conio.h" main() { long int i,x,y,z; 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(" %ld ",i); } getch(); }
这个函数中调用了 sqrt 函数,它在 math.h 文件里,我第一次调用这个函数出错,但不是由于我使用的错误,而是程序中的 x、y、z 參数的类型设错了。应该设 long int,它是有符号的,并且应该是 long 型的,否则有可能会溢出。
至于函数中为什么要推断小于 100000,这个真不知道,标记一下。或者谁知道,给个答案。
这里面还有个思维方式的问题。假设你想用开根号函数来做此题,不是不能够,不过只在參数的类型上就非常麻烦。假设不用开根号而是用平方来推断,结果是一样的,可是会简单非常多。