用筛选法求2~200以内的素数
发布网友
发布时间:2022-12-26 07:00
我来回答
共2个回答
热心网友
时间:2023-10-15 01:01
#include <iostream.h>
#include <iomanip.h>
int main( )
{
int a[99], i, j;
for(i=1; i<100; i++) //到99
a[i]=2*i+1;
for(i=0; i<99; i++)
{
if(a[i]!=0)
for(j=i+1; j<100; j++)
if(a[j]%a[i]==0) //注意这里的控制
a[j]=0;
}
int count=0;
for(int i=1; i<100; i++)
{
if(a[i]!=0)
{
cout<<setw(5)<<a[i];
count++;
if(count%10==0) cout<<endl;
}
}
cout<<endl<<"count="<<count<<endl;
getchar();
return 0;
}
//注意 判断的a[i]=0 为a[i]==0
热心网友
时间:2023-10-15 01:02
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97 101 103 107 109 113
127 131 137 139 149 151 157 163 167 173
179 181 191 193 197 199
用筛选法求2~200以内的素数
include <iostream.h> include <iomanip.h> int main( ){ int a[99], i, j;for(i=1; i<100; i++) //到99 a[i]=2*i+1;for(i=0; i<99; i++){ if(a[i]!=0)for(j=i+1; j<100; j++)if(a[j]%a[i]==0) //注意这里的控制 a[j]=0;} int count=0;f...
VC++程序:用筛选法求出2到200之间的所有素数
include "stdio.h"include "math.h"main(){ int m,i,k,h=0,leap=1;printf("\n");for(m=2;m<=200;m++){ k=sqrt(m+1);for(i=2;i<=k;i++)if(m%i==0){leap=0;break;} if(leap) {printf("%-4d",m);h++;if(h%10==0)printf("\n");} leap=1;} } ...
用筛选法求200之内的所有素数(不用return和continue)
include <stdio.h> const int N=200; //限制数据量大小为200 int main(){ int i;int count=2; //筛选起点为2 int p=0;int r[N+1];for(i=1;i<=N;i++) //为方便计,从1起 r[i]=1;while(count<=N/2){ for(i=count+1;i<=N;i++)if(r[i]==1&&i%count==...
求200以内的素数(质数)表!有没有什么规律?
2,3,5,7,11,13,17,19。剩下的数当中小于10(即20/2)的,而且还没进行过倍数剔除的只有5和7了,但这里边已经没有5的倍数和7的倍数,那么它们就都是有质数了。1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。2.程序...
如何用筛选法求出100以内的素数
用筛法求素数的基本思想是:把从1开始的、某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉。剩下的数中选择最小的数是素数,然后去掉它的倍数。依次类推,直到筛子为空时结束。如有:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ...
筛法求素数
去掉2的倍数(不包括2),余下的数是:3 5 7 9 11 13 15 17 19 21 23 25 27 29 剩下的数中3最小,去掉3的倍数,如此下去直到所有的数都被筛完,求出的素数为:2 3 5 7 11 13 17 19 23 29 筛选法又称筛法,具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,...
编程求1到100的素数
编程求1到100的素数的方法如下:1、筛选法(Sieve of Eratosthenes):这是一种高效的求解素数的算法。它的基本思想是从最小的素数2开始,依次筛选出所有小于等于n的素数。在每一步筛选中,将当前素数的倍数标记为非素数,直到n为止。这种方法可以快速地找出所有小于等于n的素数。2、试除法:这种方法是...
Java:2-200内的质数
我们认为它是质数,输出它,然后划去3的倍数,如此继续,遇到被划去的数就越过,遇到未被划去的数就输出,并划去其倍数,批量输出质数这种方法效率是我见过最高的,被称为埃色特尼筛法,你可以通过一个boolean数组和2个嵌套循环简单实现。对于单个数,则检查其是否能被2到其平方根的数整除即可 ...
C语言:素数,判断2-200 0000之间有多少素数,限时2秒,至多5秒,求解答?
int i,j,n=2000001,sum;if((pa=(char *)malloc(sizeof(char)*n))==NULL){ printf("Application memory failure...\n");exit(0);} for(i=1;i<n;pa[i++]=1);for(sum=0,i=2;i<n;i++)if(pa[i]){ for(j=i+i;j<n;pa[j]=0,j+=i);sum++;} free(pa);printf("...
c语言中用筛选法求素数
1和0既不是质数也不是合数。通过滤波法得到的100以内质数的源代码如下:#include"stdio.h"main()main(){ IntI,j。对于(I = 2;我< 99;我+ +){ 对于(j = 2;<我;J + +){ If(I%j==0){ 打破;} 如果(j==I-1){ Printf(“%4d”,I);} ...