示例代码
/*
求素数为什么到平方根就可以了?
举个栗子:
n=36 36的平方是6 36=1*36= 2*18= 3*12= 4*9= 6*6
{1,2,3,4,6}<=判数平方根6 ;{36,18,12,9,6}>=判数平方根6
因此,我们只需判断1-6中是否有36的因子。 如果没有,那么大于6的数中,也不会有36的因子。
*/
#include <stdio.h>
#include <math.h> //导入该头文件,可以应用sqrt()函数,sqrt的参数是doble类型(哪怕传递Int型,也会转化为doubel型),并且返回值也是double类型。
int isPrime(int x) //引入自创建函数,判断素数
{
int ret = 1; //先假设结果为1,即是素数
int i; //saqrt()函数是计算数的平方根
double a=sqrt(x)+1; //虽然判断到平方根就可以了,但是保险起见,再让平方根+1,范围更大一些,因为即使平方根了,也会把平方根的一些小数点后面的数省略。
if (x==1||
(x%2==0&&x!=2)) //如果为1;或能被2而整除,并且不是2,则肯定不是素数(偶数不是素数,除了2)。
ret=0;
for (i=3;i<=a;i+=2){ //让因子从3开始判断,直到平方根+1,每次加2,直接考虑因子为奇数的,毕竟偶数肯定不是素数(除了2)
if (x%i==0){
ret = 0;
break;
}
}
return ret; //返回结果
}
int main34(){
int number;
scanf("%d",&number);
printf("%d",isPrime(number));
return 0;
}
求素数为什么到平方根就可以了?
举个栗子:
n=36 36的平方是6 36=1*36= 2*18= 3*12= 4*9= 6*6
{1,2,3,4,6}<=判数平方根6 ;{36,18,12,9,6}>=判数平方根6
因此,我们只需判断1-6中是否有36的因子。 如果没有,那么大于6的数中,也不会有36的因子。