筛法求100以内的素数
时间: 2023-11-22 17:45:30 浏览: 94
筛法求100以内的素数是一种常见的算法,其基本思想是先将2~100的自然数列出来,然后从2开始,将其倍数标记为合数,最后剩下的未被标记的数即为素数。具体实现过程如下:
1.将2~100的自然数赋值给数组a~a[99]。
2.将a赋值为0,因为1不是素数。
3.从2开始,将其倍数标记为0,即合数。
4.输出数组中不为0的数,即为素数。
下面是代码实现:
#include <stdio.h>
#include <math.h>
int main() {
int i,j,k=0,a[100];
for(i=0;i<100;i++) {
a[i]=i+1; //将1~100赋值给a~a[99]
}
a=0; //先把a赋值为0
for(i=0;i<99;i++) {
for(j=i+1;j<100;j++) {
if(a[i]!=0&&a[j]!=0) {
if(a[j]%a[i]==0) {
a[j]=0; //把不是素数的都赋值为0
}
}
}
}
printf("筛选法求出100以内的素数为:\n");
for(i=0;i<100;i++) {
if(a[i]!=0) //选出值不为0的数,即素数
{
printf("%4d",a[i]);
k++;
}
if(k%10==0) //输出10个数后换行
{
printf("\n");
}
}
printf("\n");
return 0;
}
--相关问题--:
1. 筛法求素数的时间复杂度是多少?
2. 除了筛法,还有哪些求素数的算法?
3. 如何判断一个数是否为素数?
阅读全文