65,211
社区成员
发帖
与我相关
我的任务
分享
int MAX_NUM,a,b;
cout <<"请输入区间:\n";
cin>>a>>b;
cout <<" <" <<a <<"," <<b <<">\n";
MAX_NUM = b;
unsigned char *sieve= new unsigned char[MAX_NUM+1];
long i, j, k=0;
for (i=0; i <= MAX_NUM; i++) //将全部数放进筛子
sieve[i] = 1;
for (i=2; i <= b; i++)
{
if (sieve[i] == 1) //如果i在筛子里,也即i是素数
{
for (j = i + i; j <= b; j += i) //将素数i的倍数取出
sieve[j] = 0;
}
}
for(i = a; i <= b; i++)
{
if (sieve[i] == 1)
{
k++;
cout <<i <<",";
if (k % 15 == 0)
{
cout <<"\n";
k = 0;
}
cout <<"\n";
}
}
delete[]sieve;
#include <iostream>
using namespace std; //筛法求素数
void main()
{
int MAX_NUM,a,b;
cout <<"请输入区间:\n";
cin>>a>>b;
cout <<" <" <<a <<"," <<b <<">\n";
unsigned char *prime;
prime = new unsigned char[b+1];
long i, j, k=0;
for (i=0; i <= b; i++) prime[i] = 1; //初始化,假没全部为素数
prime[0]=prime[1]=0;
for (i=2; i <= b; i++) //筛法求素数
{
if(!prime[i])continue;//当前的数不是素数
for(j=2;j*i<=b;j++) prime[j*i]=0;//把当前素数的倍数去掉
}
for(i=a;i<=b;i++)
if(prime[i]) cout<<i<<' ';
cout <<"\n";
delete[]prime;
}