C语言问题:用筛选法求100之内的素数。(利用数组。)

如果能详细解释一下就更好了。... 如果能详细解释一下就更好了。 展开
 我来答
呆死了home
2013-08-05 · 超过19用户采纳过TA的回答
知道答主
回答量:59
采纳率:0%
帮助的人:52.5万
展开全部
/*
素数是只能被1和本身整除的数,1除外
*/
#include <stdio.h>

// 用MAXNUMBER表示100,方便以后程序的修改
#define MAXNUMBER 100

void GetPrime();
int main()
{
GetPrime();
return 0;
}

void GetPrime()
{
int startNumber = 2, i;
// 从2开始到MAXNUMBER结束,一个个测试
for(startNumber = 2; startNumber <= MAXNUMBER; startNumber++)
{
// 2比较特殊,所以要单独处理
if(startNumber == 2)
{
printf("%5d", startNumber);
continue;
}
// 从2开始到startNumber结束,用startNumber去对i求模
// 如果startNumber%i==0 表示startNumber不是素数,因为它能被i整除
for(i = 2; i < startNumber; i++)
{
// 如果startNumber能被小鱼startNumber内的数整除
// 表示startNumber不是素数
if(startNumber % i == 0)
{
// 跳出for循环
break;
}
}
// 跳出for循环后判断这个数是不是素数
// 如果i>=startNumber表示这个for循环不是通过break跳出的
// 而是执行到i=startNumber,即i<startNumber为假时跳出的循环
// 这样的startNumber即为素数。
if(i >= startNumber)
{
printf("%5d", startNumber);
}
}
printf("\n");
}

/*
求素数有很多方法,这个只是入门级别的方法。
*/
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
是经费和
推荐于2017-11-25 · TA获得超过1648个赞
知道小有建树答主
回答量:1584
采纳率:0%
帮助的人:789万
展开全部
//埃拉托色尼筛,算法设计与分析基础,第5页
#include<stdio.h>
#include<math.h>
#define N 100
int main(){
int a[N];
int i, j, temp;
for(i=2; i<N; i++)
a[i]=i;
a[1]=0;
temp=(int)floor(sqrt(N-1));
for(i=2; i<=temp; i++){
if(a[i]!=0){
j=a[i]*a[i];
while(j<N){
a[j]=0;
j+=i;
}
}
}
for(i=0; i<N; i++){
if(a[i]!=0)
printf("%2d ", a[i]);
}
putchar('\n');
return 0;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式