首页 > 其他 > 详细

poj3292-类素数筛选法

时间:2015-09-26 15:47:56      阅读:199      评论:0      收藏:0      [点我收藏+]

#include<iostream>
using namespace std;
const int N=1000002;
int array[N]={0};
int main(){
 int n;
 for(int i=5;i<=N;i+=4){
  for(int j=5;j<=N;j+=4){
   int num=i*j;
   if(i*j>N)
   break;
   if(array[i]==0&&array[j]==0)
   //如果 i,j 目前都不为两个数的乘积,那么i*j就是由两个类素数相乘的积;如果之后 i,j 不是类素数,那么由下面的语句也会将其替换成-1.
   array[num]=1;
   else
   array[num]=-1;
  }
 }
 int count=0;
 for(int i=0;i<N;i++){
  if(array[i]==1)
  count++;//设置累加器,输出所求数的个数
  array[i]=count;
 }
 while(cin>>n,n!=0){
  cout<<n<<" "<<array[n+1]<<endl;
 }
 return 0;
}

poj3292-类素数筛选法

原文:http://www.cnblogs.com/tz346125264/p/4840752.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!