POJ3292
2015-11-08 23:16
190 查看
水题,给出一个数n,求在1到n中,刚好是由两个模4余1的素数相乘得到的数有多少个
#include <iostream>
#include <cstdio>
#include <queue>
#include <algorithm>
#include <cstring>
#include <string>
#include <stack>
#include <stdlib.h>
using namespace std;
const int size=1000001;
int H_number[size+1];
int H[size+1];
void isH_number()
{
memset(H_number,0,sizeof(H_number));
for(int i=5;i<=size;i+=4)
for(int j=5;j<=size;j+=4)
{
int m=i*j;
if(m>size)break;
if(H_number[i]==0&&H_number[j]==0)H_number[m]=1;
else H_number[m]=-1;
}
int count=0;
for(int i=1;i<=size;i++)
{
if(H_number[i]==1)count++;
H[i]=count;
}
}
int main()
{
isH_number();
int n;
while(cin>>n&&n)
{
cout<<n<<' '<<H
<<endl;
}
return 0;
}
#include <iostream>
#include <cstdio>
#include <queue>
#include <algorithm>
#include <cstring>
#include <string>
#include <stack>
#include <stdlib.h>
using namespace std;
const int size=1000001;
int H_number[size+1];
int H[size+1];
void isH_number()
{
memset(H_number,0,sizeof(H_number));
for(int i=5;i<=size;i+=4)
for(int j=5;j<=size;j+=4)
{
int m=i*j;
if(m>size)break;
if(H_number[i]==0&&H_number[j]==0)H_number[m]=1;
else H_number[m]=-1;
}
int count=0;
for(int i=1;i<=size;i++)
{
if(H_number[i]==1)count++;
H[i]=count;
}
}
int main()
{
isH_number();
int n;
while(cin>>n&&n)
{
cout<<n<<' '<<H
<<endl;
}
return 0;
}
相关文章推荐
- FPGA研发之道(20)-片上系统
- Java 多线程知识点
- win7 64位系统连接xp 32位共享打印机办法
- C++11 note-2 字符串 容器 迭代器
- 博弈
- FPGA研发之道(19)- “背靠大树好乘凉”--总线(下)
- sql server练习(Crete和Alter)
- 静态链表
- FPGA研发之道(18)-设计不是凑波形(八)总线(上)
- Java 垃圾回收机制
- LintCode- 最长上升连续子序列
- ASP.NET加载更多
- Magical Record设计小谈
- Linux之旅--Bash
- Nvidia Jetson tk1 handon
- 二叉搜索树的表示及相关算法
- java 线程的几种状态
- 从下向上弹出Dialog 动画
- HDU5514(容斥)
- FPGA研发之道(17)-化繁为简