题意:
规定H-number为所有能由4*i+1组成的数
给定一个数A,问0-A中所有能2个H-number相乘得到的数有多少个
分析:
直接打表之
ACcode:
#include <iostream>
#include <cstdio>
#include <queue>
#include <cstring>
#include <algorithm>
#include <math.h>
using namespace std;
#define eps 1e-6
#define mod 9901
#define ll long long
#define maxn 1000006
int p[maxn];
int cnt;
void get_prime(){
cnt=0;
memset(p,0,sizeof(p));
for(int i=5;i<1005;i+=4)
if(p[i]==0){
for(int j=i;i*j<maxn;j+=4)
p[i*j]=p[i]+p[j]+1;
}
for(int i=1;i<maxn;++i)
if(p[i]==1)p[i]=p[i-1]+1;
else p[i]=p[i-1];
}
int main(){
get_prime();
int a;
while(cin>>a&&a)cout<<a<<" "<<p[a]<<'\12';
return 0;
}