码迷,mamicode.com
首页 > 其他好文 > 详细

poj3292-类素数筛选法

时间:2015-09-26 15:50:18      阅读:254      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!