C语言刷题随记 —— 完全平方数
题目
1. 题目描述
一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少?
2. 程序分析
在 10 万以内判断(可以是比100000大的数字),先将该数加上 100 后再开方,再将该数加上 268 后再开方,如果开方后的结果满足如下条件,即是结果。
思路
遍历10万以内的数字,将每个数字分别加上 100 和 168后开平方,最后计算加上100 和 168 后的两数的平方,如果一个数的平方根的平方等于该数,这说明此数是完全平方数。
可以使用 math.h 库中的 sqrt函数 来进行开方计算会更方便。
题解
#include <stdio.h> #include <math.h> int 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); } return 0; }
下一篇:
数组之数组中只出现一次的数字