小标
2018-07-13
来源 :
阅读 1977
评论 0
摘要:本文主要向大家介绍了用JAVA语言的欧拉筛法求素数,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
本文主要向大家介绍了用JAVA语言的欧拉筛法求素数,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
#include <stdio.h>
#include <stdbool.h>
bool flag[10001] = {0};
int p[10001] = {0};
int main()
{
int i, n, cnt = 0, j;
scanf("%d", &n);
for (i = 2; i <= n; ++i){
if (flag[i] == 0)
p[cnt++] = i;
for (j = 0; j < cnt && i * p[j] <= n; ++j){
flag[i * p[j]] = 1;
if (i % p[j] == 0) break;
}
}
for (i = 0; i < cnt; ++i)
i == cnt - 1 ? printf("%d\n", p[i]) : printf("%d ", p[i]);
return 0;
}</stdbool.h></stdio.h>
说明
flag标记下标是否为合数 p按顺序存放素数 flag[i * p[j]] = 1筛掉i这一素数的素数倍数。 若i能整除p[j]则跳出循环,等到p[j]==i时再筛去i*p[j]这个数。即仅在合数的最大因子作为乘数时筛去这一合数。 时间复杂度O(n)
希望对JAVA有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言JAVA频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号