除自身之外,无法被其他整数整除的数称为质数,质数的求法很简单,但如何快速的求出质数一直是程序员与数学家努力的课题,这里介绍一个著名的Eratosthenes求质数的方法。
解法
首先知道这个问题可以使用循环来求解,将一个指定的数除以所有小于它的数,若可以整除就不是质数,然而如何减少循环的检查次数?如何求出小于N的所有质数?
首先假设要判断的数是N,则事实上只要检查到N的平方根就可以了,道理很简单,假设A*B=N,如果A大于N的平方根,则事实上在小于A之前的检查就可以先检查到B这个数可以整除N。不过在程序中使用平方根会有精确度的问题,所以可以使用i*i<=N进行检查,且执行更快。
再来假设有一个筛子存放1~N,例如
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ........ N
先将2的倍数筛去:
2 3 5 7 9 11 13 15 17 19 21 ........ N
再將3的倍數篩去:
2 3 5 7 11 13 17 19 ........ N
再來將5的倍数筛去,再來將7的质数筛去,再來將11的倍數筛去........,如此进行到最后留下的數就都是質數,這就是Eratosthenes筛选方法(Eratosthenes Sieve Method)。
检查的次數还可以再減少,事實上,只要检查6n+1与6n+5就可以了,也就是直接跳过2与3的倍数,使得程序中的if的检查动作可以減少。
def findPrimes(max)
prime=[1]*max
for i in 2..Math.sqrt(max).to_int
if prime[i]==1
for j in 2*i..max
if j%i==0
prime[j]=0
end
end
end
end
t=[]
prime.each_index{|i|t<<i if prime[i]==1 and i>1}
p t
end
primes=findPrimes(1000)
分享到:
相关推荐
### C经典算法之Eratosthenes筛选求质数 #### 概述 在数学领域,质数(Prime Number)是指只能被1和自身整除的大于1的自然数。寻找质数的方法有很多种,其中Eratosthenes筛法是一种古老而有效的算法,可以高效地找...
在易语言中实现Eratosthenes筛选法求质数的源码可能如下: ```易语言 .整数变量 n, i, j .布尔型数组 质数表 (n) .输入 "请输入要找的质数上限:", n 质数表.全部赋值 (.真) i = 2 .循环 (n) .如果 质数表[i] j...
在这个“易语言Eratosthenes筛选法求质数”项目中,我们将探讨如何使用易语言实现Eratosthenes筛选法,这是一种古老的算法,用于找出一定范围内的所有质数。 Eratosthenes筛选法,又称为埃拉托斯特尼筛法,是由古...
筛选法求素数是计算机程序设计中的一种常见算法,用于找出一定范围内所有素数。在C++编程语言中实现这个算法,我们可以利用其强大的数组处理能力和控制结构来高效地完成任务。下面将详细介绍筛选法(也称为...
Eratosthenes筛选求质数 超长整数运算(大数运算) 长 PI 最大公因数 最小公倍数 因式分解 完美数 阿姆斯壮数 最大访客数 中序式转后序式(前序式) 后序式的运算 ">C语言经典算法大全 老掉牙 河内塔 ...
Eratosthenes筛选求质数 超长整数运算(大数运算) 长 PI 最大公因数、最小公倍数、因式分解 完美数 阿姆斯壮数 最大访客数 中序式转后序式(前序式) 选择、插入、气泡排序 Shell 排序法 - 改良的插入排序...
15.Algorithm Gossip: Eratosthenes 筛选求质数 16.Algorithm Gossip: 超长整数运算(大数运算). 17.Algorithm Gossip: 长 PI. 18.Algorithm Gossip: 最大公因数、最小公倍数、因式分解 19.Algorithm Gossip: 完美...
Eratosthenes筛选求质数 超长整数运算(大数运算) 长 PI 最大公因数、最小公倍数、因式分解 完美数 阿姆斯壮数 最大访客数 中序式转后序式(前序式) 后序式的运算 关于赌博 洗扑克牌(乱数排列) ...
Eratosthenes筛选求质数 超长整数运算(大数运算) 长 PI 最大公因数、最小公倍数、因式分解 完美数 阿姆斯壮数 最大访客数 中序式转后序式(前序式) 后序式的运算 关于赌博 洗扑克牌(乱数排列) ...
Eratosthenes筛选求质数 超长整数运算(大数运算) 长 PI 最大公因数、最小公倍数、因式分解 完美数 阿姆斯壮数 最大访客数 中序式转后序式(前序式) 后序式的运算 关于赌博 洗扑克牌(乱数排列) ...
Eratosthenes筛选求质数 超长整数运算(大数运算) 长 PI 最大公因数、最小公倍数、因式分解 完美数 阿姆斯壮数 最大访客数 中序式转后序式(前序式) 后序式的运算 关于赌博 洗扑克牌(乱数排列) Craps...
Eratosthenes筛选求质数 超长整数运算(大数运算) 长 PI 最大公因数、最小公倍数、因式分解 完美数 阿姆斯壮数 最大访客数 中序式转后序式(前序式) 后序式的运算 关于赌博 洗扑克牌(乱数排列) Craps...
Eratosthenes筛选求质数 超长整数运算(大数运算) 长 PI 最大公因数、最小公倍数、因式分解 完美数 阿姆斯壮数 最大访客数 中序式转后序式(前序式) 后序式的运算 关于赌博 洗扑克牌(乱数排列) ...
求质数的函数则会实现Eratosthenes筛选法的逻辑。 通过学习并理解这个源码,开发者可以深入掌握易语言的编程技巧,了解如何在实际项目中使用数组和循环,以及如何优化算法提高程序效率。对于初学者,这是一个很好的...
Eratosthenes筛选求质数 超长整数运算(大数运算) 长 PI 最大公因数、最小公倍数、因式分解 完美数 阿姆斯壮数 最大访客数 中序式转后序式(前序式) 后序式的运算 关于赌博 洗扑克牌(乱数排列) ...
Eratosthenes筛选求质数 超长整数运算(大数运算) 长 PI 最大公因数、最小公倍数、因式分解 完美数 阿姆斯壮数 最大访客数 中序式转后序式(前序式) 后序式的运算 关于赌博 洗扑克牌(乱数排列) ...
Eratosthenes筛选求质数 超长整数运算(大数运算) 长 PI 最大公因数、最小公倍数、因式分解 完美数 阿姆斯壮数 最大访客数 中序式转后序式(前序式) 后序式的运算 关于赌博 洗扑克牌(乱数排列) ...
Eratosthenes筛选求质数 超长整数运算(大数运算) 长 PI 最大公因数、最小公倍数、因式分解 完美数 阿姆斯壮数 最大访客数 中序式转后序式(前序式) 后序式的运算 关于赌博 洗扑克牌(乱数排列) ...