判断素数的4种⽅法(C语⾔)
判断素数的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)
return0;
for(i=3;i=n/2;i+=2){
if(n%i==0)
return0;
c++判断素数
return1;
}
}
//⽅法四:从3-n,只判断奇数,先对⼀个数进⾏奇偶判断,若是奇数,
//只对从3到它本⾝的奇数进⾏求余计算,同理若是偶数,⼀定不是素数。
bool isPrimel_4(int n)
{int i,j=1;
if(n%2==0)
return0;
else{
for(i=3;i<=n;i=i+2){
if(n%i==0)
j=i;
break;
}
}
if(j==n)
return0;
return1;
}
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)); return0;
}