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;
}
经验分享 程序员 微信小程序 职场和发展