如何定义C中的数字是否为平方数?

时间:2015-10-01 13:54:17

标签: c

如何在C语言中定义数字是否为正方形?如找到任何正整数的平方根,我们在sqrt()头文件中编写的C语言中使用<math.h>函数。

假设我们必须找到正整数x的平方根。该程序将使用C语言。

#include <stdio.h>
#include <math.h>

int main()
{
  int x;
  double sq;

  scanf("%d", &x);    
  sq = sqrt(x);    
  printf("%0.2f\n", sq);

  return 0;
}

像这样,那么现在找出一个数字是否是平方数的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

获得平方根后,将结果转换为int,这将截断任何小数分量。然后将该数字乘以其自身,并检查它是否等于原始数字。

int x = // some nonnegative number
double sq = sqrt(x);
int sq_int = (int)sq;
if (sq_int * sq_int == x) {
    print("%d is a square\n", x);
} else {
    print("%d is not a square\n", x);
}

例如,如果x为9,则sq为3.0。因此sq_int设置为3,因为3 * 3 == 9为真,所以它会打印9 is a square

如果x为10,则sq为3.162277 ....因此sq_int设置为3(因为小数部分被截断),并且3 * 3 == 10如果是假的,它会打印10 is not a square

答案 1 :(得分:1)

#include <stdio.h>
#include <math.h>

int main(void)
{
    double x;

    double sq;

    scanf("%lf",&x);

    sq = sqrt(x); 

    if( sq == (int)sq )
        printf("sq is a root\n");
    else
        printf("sq is not a root\n");

    return 0;
}