素数打表 cf 546D
2015-06-08 19:28
435 查看
素数打表代码:
memset(a,0,sizeof a);
for(int i = 2; i<=maxn;i++)
if(!a[i])
{
for(int j = i; j <=maxn;j += i)
a[j] = a[j/i] + 1;
}
题目代码
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int ans[5000001];
int main(void)
{
int cnt;
cin >> cnt;
for(int i = 2; i<=5000000;i++)//素数打表
{
if(!ans[i])
{
for(int j = i; j <= 5000000; j+=i)
ans[j]=ans[j/i]+1;
}
}
for(int i = 2; i<=5000000;i++)
ans[i]+=ans[i-1];
for(int i = 1; i<=cnt;i++)
{
int s ,e;
scanf("%d%d",&s,&e);
printf("%d\n",ans[s]-ans[e]);
}
}
memset(a,0,sizeof a);
for(int i = 2; i<=maxn;i++)
if(!a[i])
{
for(int j = i; j <=maxn;j += i)
a[j] = a[j/i] + 1;
}
题目代码
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int ans[5000001];
int main(void)
{
int cnt;
cin >> cnt;
for(int i = 2; i<=5000000;i++)//素数打表
{
if(!ans[i])
{
for(int j = i; j <= 5000000; j+=i)
ans[j]=ans[j/i]+1;
}
}
for(int i = 2; i<=5000000;i++)
ans[i]+=ans[i-1];
for(int i = 1; i<=cnt;i++)
{
int s ,e;
scanf("%d%d",&s,&e);
printf("%d\n",ans[s]-ans[e]);
}
}
相关文章推荐
- adb.exe,start-server' failed -- run manually if necessary
- C++对C的函数拓展 - 占位参数
- C++对C的函数拓展 - 占位参数
- 本地wordpress加载速度缓慢的解决方法和安装插件
- svn提交代码出错
- 用shell写的nginx服务程序
- 使用通知中心NSNotificationCenter实现不同的视图控制器的参数传递
- Max Points on a Line -- leetcode
- 解读BOM与COM
- SecureCRTPortable.exe 如何上传文件
- 最长公共子序列
- C++对C的函数拓展 - 默认参数
- C++对C的函数拓展 - 默认参数
- String、CString、char*、int、float、double相互转换
- UVa 12589 Learning Vector
- 关于 HorizontalScrollView 横向滚动,显示不全问题。
- UVA - 10911 Forming Quiz Teams
- Dubbo源码阅读体会(一)
- Jackson fasterxml和codehaus的区别 (fasterxml vs. codehaus)
- Java多线程的基本概述以及创建