打印素数是一个在学习C语言过程中一定会要做的题,我这里整理了两种解决方法
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define N 10
int test1()
{
int i = 0;
int count = 0;
for (i = 1; i <= N; i ++ )
{
int j = 0;
for (j = 2; j <= i - 1; j++)
{
if (i%j == 0)
break;
}
if (i == j || i == 1 || i==2)
{
count++;
printf("%d ", i);
}
}
return count;
}
int test2()
{
int i = 0;
int j = 0;
int k = 0;
int count = 1;
int arr[N];
for (i = 0; i < N; i++)
{
arr[i] = i;
}
printf("1 ");//1是素数
for (i = 2; i < N; i++)
{
for (j = 1; j <= i; j+=1)
{
if (arr[i]%j == 0 && arr[i] != 0 && j==i)
{
count++;
printf("%d ", arr[i]);
for(k=2*i;k<N;k+=i)
{
arr[k] = 0;//发现一个素数,并把这个素数的倍数置成0;
}
}
}
}
return count;
}
int main(void)
{
//int count1 = test1();//普通的方法
int count2 = test2();//筛选的方法
printf("\ncount=%d", count2);
system("pause");
return 0;
}