判断素数的4种方法
素数定义:质数又称素数。指整数在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。换句话说,只有两个正因数(1和自己)的自然数即为素数。比1大但不是素数的数称为合数,1和0既非素数也非合数。素数在数论中有着很重要的作用。
**
一言不合直接上代码:
**
#include<stdio.h>
#include<math.h>
//方法一:从1-n挨个判断;
bool isPrimel_1(int n)
{ for(int i=2;i<n;i++)
if(n%i==0)
return false;
return true;
}
//方法二: 将被判断数n,进行开方作为判断结束的条件,
//因为开方后的数,是n的最大因子,最大因子之后的数对判断该数是否是素数没有意义。
bool isPrimel_2(int n)
{ for(int i=2;i<sqrt(n);i++)
if(n%i==0)
return false;
return true;
}
//方法三: 只需要判断到该数的一半即可,如果超过它本身的一半,
//进行求余的结果将永远不会为0,除非是该数对该数的求余。
bool isPrimel_3(int n)
{ int i;
if(n%2==0)
return 0;
for(i=3;i=n/2;i+=2){
if(n%i==0)
return 0;
return 1;
}
}
//方法四:从3-n,只判断奇数,先对一个数进行奇偶判断,若是奇数,
//只对从3到它本身的奇数进行求余计算,同理若是偶数,一定不是素数。
bool isPrimel_4(int n)
{ int i,j=1;
if(n%2==0)
return 0;
else{
for(i=3;i<=n;i=i+2){
if(n%i==0)
j=i;
break;
}
}
if(j==n)
return 0;
return 1;
}
int main()
{
int n;
printf("请输入一个数:");
scanf("%d",&n);
printf("%d,%d,%d,%d\n",isPrimel_1(n),isPrimel_2(n),isPrimel_3(n),isPrimel_4(n));
return 0;
}
假如李白会编程,数学文理齐全通;若非时代被拘禁,必定偏科不严重。