93是质数还是合数 怎样用筛选法找3的倍数?
怎样用筛选法找3的倍数?
筛选法,也称为筛选法,是一种查找所有不超过自然数n(n>1)的素数的方法。
具体方法是:先按顺序排列n个自然数。
1不是素数或复合数,因此应将其划掉。
第二个数字2是一个素数,所有在2之后可以被2整除的数字都被划掉。
2之后未划掉的第一个数字是3。留下3,然后划掉所有可以被3整除的数字。
3之后未划掉的第一个数字是5。留下5,然后划掉所有能被5除的数字。
如果我们一直这样做,我们将筛选出所有不超过n的组合数,留下所有不超过n的素数。
筛选法,数学?
筛选方法,也称为筛选方法,是一种查找所有不超过自然数n(n>1)的素数的方法。据说它是由古希腊的埃拉托什尼发明的,也叫埃拉托什尼筛。具体方法是:先排列n个自然数。1不是素数或复合数,所以应该将它划掉。第二个数字2是素数,所有在2之后可以被2整除的数字都被划掉。在2之后没有划掉的第一个数字是3。留下3,然后划掉所有可以被3整除的数字。在3之后没有划掉的第一个数字是5。留下5,然后划掉所有能被5除的数字。如果我们一直这样做,我们将筛选出所有不超过n的组合数字,留下所有不超过n的素数。因为希腊人在打蜡板上写数字,每次划掉一个数字,他们都会在上面写上小点。寻找素数的工作完成后,许多点像一个筛子,所以埃拉托斯坦的方法被称为“埃拉托斯坦筛子法”,简称“筛子法”。(另一种解释是,当时的数字是写在纸上的。每次划掉一个数字,就把它挖出来。搜索素数的工作完成后,许多小孔就像一个筛子。)
如何用筛选法求1000000以内的素数?
#Include<stdio。H>
intprime[501
]main()
{
inti,J,C=2
printf(“-4D%-4D”,0,1)/*手动输出0和1,因为这两个不能被筛选出来*/
for(I=2I<=500i)
{
if(!素数[i])/*0表示素数*/]{
printf(“-4D”,i)
if(C ==0)printf(“n”)/*10换行符*/
for(J=i*ij<=501j=i)Prime[J]=1/*筛选出这个素数的倍数*/]}]返回0]}
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。