【C语言】判断一个数是否是完全平方数(两种解法)

题目:

判断一个数是否是完全平方数。
以下数字为完全平方数:4=2*2,9=3*3,144=12*12,169=13*13

有两个方法,可以求完全平方数:

方法一:输入一个数,遍历所有比这个数小的数,只要有其中一个数满足条件 小于该数的数 * 小于该数的数 = 该数,如3*3 = 9,那么这个数是完全平方数。

方法二:输入一个数,对这个数开方后取整,√该数 * √该数 = 该数,如√9*√9 = 3*3 = 9 ,那么这个数是完全平方数。

  • 使用sqrt()函数,对整数进行开方,开方后得到的是浮点数
  • 完全平方数开方后得到的应该是一个整数,而不是小数,所以使用(int)对这个开方后的数取整(3.9取整是3,3.0取整是3)
  • 这个数开方后取整得到的数,再平方,如果等于输入的数,那么该数是完全平方数

例:
输入9:√9 = 3.000000 -> (int)3.000000 = 3 -> 3*3 = 9,得到9是完全平方数
输入7:√7 = 2.645751 -> (int)2.645751 = 2 -> 2*2 != 7,得到7不是完全平方数

1.方法一的代码实现如下:

#include

int main()
{
	int i,n,flag=0; //flag标记是否是完全平方数,默认flag=0不是完全平方数
	scanf("%d",&n);
	for(i=1;i<n;i++) //从1循环到n-1
		if(i*i==n) //完全平方数判断条件
			flag=1;
	if(flag==1)
		printf("%d是完全平方数\n",n);
	else
		printf("%d不是完全平方数\n",n);
	return 0;
}

运行结果如下:

【C语言】判断一个数是否是完全平方数(两种解法)_第1张图片
【C语言】判断一个数是否是完全平方数(两种解法)_第2张图片

2.方法二的代码实现如下:

#include
#include

int main()
{
	int n,integer; 
	scanf("%d",&n);
	integer = (int)sqrt(n); //对输入的整数开方后,得到浮点数,再对浮点数取整
	if(n == integer * integer) //完全平方数判断条件
		printf("%d是完全平方数\n",n);
	else
		printf("%d不是完全平方数\n",n);
	return 0;
}

运行结果如下:

【C语言】判断一个数是否是完全平方数(两种解法)_第3张图片

你可能感兴趣的:(C语言,c语言,算法)