C语言-数组的趣味应用-筛法求素数
筛法求素数是一种利用数组的、较快地求得素数的方法。例如,我们用筛法求100以内的所有素数。
首先初始化,将2到100的所有数存到一个数组内,令a[2]=2,a[3]=3,…a[N]=N.依次从数组中筛掉2的倍数,3的倍数,5的倍数,…,sqrt(N)的倍数(所谓“筛掉”即令其为0);这个过程就是筛掉所有素数的倍数,直到a中仅剩下素数为止(剩下的不为0的数不是任何数的倍数)
#include<stdio.h>
#include<math.h>
#define N 100
void PrintPrime(int a[],int n);
void SiftPrime(int a[],int n);
int main()
{int a[N+1];SiftPrime(a,N);PrintPrime(a,N);return 0;
}
void SiftPrime(int a[],int n)
{for (int i=2;i<=N;i++){//初始化a[i]=i;}for (int i=2;i<=sqrt(N);i++){//筛for (int j=i+1;j<=N;j++){if (a[i]!=0 && a[j]!=0 && a[j]%a[i]==0){a[j]=0;}}}
}
void PrintPrime(int a[],int n)
{for (int i=2;i<=N;i++){if (a[i]!=0){printf("%d\t",a[i]);}}printf("\n");
}
运行结果
C语言-数组的趣味应用-筛法求素数相关推荐
- 筛法求素数(C语言/C++)
什么是素数 定义 在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数. C语言实现判断素数 int prime(int x) {for(int i=2;i*i<=x;i++){if ...
- 线性筛法求素数c语言,[算法]素数筛法(埃氏筛法线性筛法)
一.素数筛的定义 给定一个整数n,求出[1,n]之间的所有质数(素数),这样的问题为素数筛(素数的筛选问题). 二.埃氏筛法(Eratosthenes筛法) 埃氏筛法又叫做Eratosthenes筛法 ...
- 一般筛法求素数+快速线性筛法求素数
一般筛法求素数+快速线性筛法求素数 标签: 正则表达式算法优化扩展c 2010-08-22 01:28 28738人阅读 评论(8) 收藏 举报 分类: 算法学习资料(5) 版权声明:本文为博主原 ...
- 数论 判断素数:普通素数判别 线性筛 二次筛法求素数 米勒拉宾素数检验
普通的素数判断法 当我们要判断一个数字是否是素数的时候,往往会直接看这个数字模1到这个数字的根号,看有没有等于零的,从而判断这个数字是不是素数,这样做的时间复杂度为O(sqrt(n)) bool is ...
- 普通素数 筛法求素数 二次筛法求素数 MillerRabin素数测试【模板】
素数和合数共同的性质: 1.a > 1是合数,当且仅当a = b * c,其中1 < b < a,1 < c < a. 2.合数必有素数因子. 3.如果d > 1, ...
- 筛法求素数 (20分)
题干: 素数是仅仅能被它本身和1整除的任何整数.筛法求素数是一种查找素数的方法.它的算法如下: 1.创建一个数组,并将所有元素初始化为1(真).具有素数下标的数组元素将保持为1,而其它数组元素最终将被 ...
- Java用“埃氏筛法”求素数
用"埃氏筛法"求素数. 先去掉2的倍数,再去掉3的倍数,再去掉4的倍数,--依此类推,最后剩下的就是素数. 要求:使用数组,使用数组的长度,使用增强的for语句 import ja ...
- CodeForce 236B Easy Number Challenge(筛法求素数 + 整数因式分解)
题目链接:http://codeforces.com/problemset/problem/236/B Easy Number Challenge time limit per test 2 seco ...
- 一般筛法和快速线性筛法求素数 求素数的一点总结
素数总是一个比较常涉及到的内容,掌握求素数的方法是一项基本功. 基本原则就是题目如果只需要判断少量数字是否为素数,直接枚举因子2 ..N^(0.5) ,看看能否整除N. 如果需要判断的次数较多,则先用 ...
- 1042: 筛法求素数
1042: 筛法求素数 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 1387 Solved: 918 [Submit][Status][Web B ...
最新文章
- 转载 iOS js oc相互调用(JavaScriptCore) --iOS调用js
- 用于视力恢复的脑机接口综述(一)(修改)
- VUE 路径拦截, 开放页面, 基于动态路由, 拦截器
- Linux下rz,sz
- 没有内存条电脑能开机吗_电脑没内存条能开机吗?这位朋友说他的电脑没内存条都用几年了!...
- Net任意String格式转换为DateTime类型
- pytorch之mnist数据集存放位置以及本地加载
- Redis小记——数据结构
- LeetCode:10.regular-expression-matching(正则式表达)
- 女生不能学理科?python+数据可视化分析15万考生的成绩,刷新了我的认知
- 访问某个xml的url并将网页转成字节流
- 3个开源TTS(三)flite的简要分析与espeak的选择
- 方正飞鸿FIX ES2007荣获大连软交会创新产品奖
- 神经网络学习——第一个代码学习
- 如何屏蔽百度搜索推广
- 宝塔一键安装部署tipask登录出现错误:The email must be at least 8 characters怎么回事
- 天池新人赛之新浪微博互动预测
- 你值得安装的24个chrome插件!!!
- error in ./node_modules/swagger-ui-react/swagger-ui.js
- 【玩转ms17-010】mysql数据库-脱裤实践