#include<stdio.h>
#include<math.h>
void number(int n) //判断素数,不考虑数字1、2、3
{
int a = 0;
int i = 0;
for (i = 2; i <= sqrt(n); i++)
{
if (n % i == 0)
{
printf("%d不是素数\n", n);
break;
}
//a = sqrt(n); //赋值给a,在用a去比较,结果正常
//if (i >= a) //此段代码执行结果正确
//{
// printf("%d是素数\n", n);
//}
if (i >= sqrt(n)) //输入素数不进入
{
printf("%d是素数\n", n);
}
}
}
int main()
{
int n = 0;
printf("输入一个数判断:>");
scanf("%d", &n);
number(n);
return 0;
}
sqrt()函数返回double型数据,加强制类型转换,如下:for (i = 2; i <= (int)sqrt(n); i++) if (i >= (int)sqrt(n))
这篇文章讲的很详细,请看:C语言的sqrt函数的调用应该把这个语句块放在循环体外面后面
if (i >= sqrt(n))
并且改为
if (i > sqrt(n))