实例四十九:筛选法
问题描述: 用筛选法求指定范围内全部素数。
算法思路:
筛选法求素数基本原则就是“筛”掉指定范围内的非素数。 比如,要求 100 以内的所有素数,先将 2~100 之间的数按顺序放到一维数组中,从数组中先找出最小的素数(即 2 ),然后将该素数的倍数从数组中“筛”掉,其方法就是将数组中该素数的倍数的那些元素置 0 .再从数组中找出次小的非零数(即下一个素数),重复以上步骤,最后数组中非零的元素就都是素数。
#include<stdio.h>
#define N 100
int main()
{
int a
[N
],i
,j
;
for(i
=1;i
<N
;i
++)
a
[i
] = 1 + i
;
for(i
=1;i
<N
;i
++)
{
if(a
[i
]==0)
continue;
for(j
=i
+1;j
<N
;j
++)
if(a
[j
] % a
[i
]==0)
a
[j
] = 0;
}
for(j
=0,i
=1;i
<N
;i
++)
if(a
[i
]!=0)
{
j
++;
printf("%d",a
[i
]);
if(j
%5==0)
printf("\n");
}
return 0;
}
转载请注明原文地址: https://mac.8miu.com/read-8179.html