筛选法求素数
2014-07-31 19:08
148 查看
素数的定义是:除了1和本身外,不存在整除这个整数本身的整数。
主要思想如下:
在所求区间内剔除能被2整除的整数,
在所求区间内剔除能被3整除的整数,
。
。
。
在所求区间内剔除能被sqrt(num_Max)整除的整数,
由于在以上步骤中有重复和无效的判断,所以进行了小的优化:在剔除能被 i 整除的整数操作中,可以直接从 i * 2 开始判断;在判断前也可先加一个判断是否已经是素数。
实例代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define num 100
int main()
{
int a[num+1];
for (int i = 0; i < num + 1; i++) {
a[i] = i;
}
a[1] = 0;//1不是素数
for (int i = 2; i<sqrt((double)num); i++) {
for (int j = i *2; j <= num; j++) {
if (a[j] != 0 && a[j] % i == 0) {
a[j] = 0;
}
}
}
for (int i = 1; i<num + 1; i++)
{
if (a[i] != 0)
{
printf("%d ", a[i]);
}
}
return 0;
}
主要思想如下:
在所求区间内剔除能被2整除的整数,
在所求区间内剔除能被3整除的整数,
。
。
。
在所求区间内剔除能被sqrt(num_Max)整除的整数,
由于在以上步骤中有重复和无效的判断,所以进行了小的优化:在剔除能被 i 整除的整数操作中,可以直接从 i * 2 开始判断;在判断前也可先加一个判断是否已经是素数。
实例代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define num 100
int main()
{
int a[num+1];
for (int i = 0; i < num + 1; i++) {
a[i] = i;
}
a[1] = 0;//1不是素数
for (int i = 2; i<sqrt((double)num); i++) {
for (int j = i *2; j <= num; j++) {
if (a[j] != 0 && a[j] % i == 0) {
a[j] = 0;
}
}
}
for (int i = 1; i<num + 1; i++)
{
if (a[i] != 0)
{
printf("%d ", a[i]);
}
}
return 0;
}
相关文章推荐
- 素数筛选法
- 筛选法求素数
- Difference Between Primes----素数筛选
- 筛选素数
- 素数筛选
- POJ3292 Semi-prime H-numbers 素数筛选
- 筛选法求素数
- HDU 2136 Largest prime factor(素数筛选+打表)
- 杭电 4548 美素数 (筛选素数 打表 )
- 线性筛选素数--python
- 素数筛选(筛选小于等于MAXN的素数)
- 验证素数(素数筛选法验证素数)
- Light OJ 1356 Prime Independence 最大独立集+素数筛选
- Goldbach's Conjecture(筛选法求素数)
- 筛选法求素数
- 顺序表筛选素数
- 筛选素数空间压缩(数论)&& Double Happiness
- 筛选法求素数 关键词——置零
- 筛选法求素数
- hdu 1164 Eddy's research I 素数筛选法