求2~n之间所有素数的两种方法(试除法和筛选法)
试除法
例如:试除法主要是通过判断一个数是否能被小于它的数整除来判断素数
#include <stdio.h>
//试除法求素数 2~n之间
int main() {
int n = 0;
while (~scanf("%d",&n))
{
int i = 0;
int count = 0;
for ( i = 2; i <= n ; i++)
{
int j = 2;
for ( j = 2; j <= i-1; j++)
{
if (i % j == 0) {
count++;
break;
}
}
if (j==i)
{
printf("%d ", i);
}
}
printf("\n%d\n", count);
}
}
筛选法
用筛选法求n以内的素数。筛选法求解过程为:将2~n之间的正整数放在数组内存储,将数组中2之后的所有能被2整除的数清0,再将3之后的所有能被3整除的数清0 ,以此类推,直到n为止。数组中不为0 的数即为素数。
#include <stdio.h>
int main(){
int n = 0;
while (~scanf("%d",&n)) {
int arr[101]= {0};
for(int i =2;i<=n;i++){
arr[i] = i;
}
int j = 0;
for(j=2;j<=n;j++){
int k = 0;
for(k=j+1;k<=n;k++){
if (arr[k]%j==0) {
arr[k] = 0;
}
}
}
int i = 0;
int count = 0;
for(i = 2; i<=n;i++){
if(arr[i]!=0){
printf("%d ",arr[i]);
}else{
count++;
}
}
printf("\n%d\n",count);
}
}
总结
用c语言实现了两种求2~n之间所有素数的方法