1.直接判断法:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
scanf("%d",&n);
for(int i=2;i<n;i++){
if(n%i==0)
break;
}
if(i==n)
printf("是素数");
else
printf("不是素数");
return 0;
}
2.改进的直接判断法:
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
int main()
{
int n;
scanf("%d",&n);
for(int i=2;i<sqrt(n);i++){
if(n%i==0)
break;
}
if(i==n)
printf("是素数");
else
printf("不是素数");
return 0;
}
3.筛选法:
步骤:(1、从第一个不为1的数中开始,去除所有的倍数,知道循环结束,或者循环到n的开方。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
scanf("%d",&n);
int a[n];
for (int i=1;i<=n;i++){
a[i]=i;
}
a[1]=0;
for(int j=2;j<=sqrt(n);j++ ){
for (int k=j+1;k<n;k++){
if(a[k]!=0&&a[j]!=0){
if(a[k]%a[j]==0)
a[k]=0;
}
}
}
for (int i=1;i<n;i++){
if(a[i]!=0)
printf("%d ",a[i]);
}
return 0;
}