HDU - 4548-美素数 (欧拉素数筛+打表)
2024-10-09 13:55:59
小明对数的研究比较热爱,一谈到数,脑子里就涌现出好多数的问题,今天,小明想考考你对素数的认识。
问题是这样的:一个十进制数,如果是素数,而且它的各位数字和也是素数,则称之为“美素数”,如29,本身是素数,而且2+9 = 11也是素数,所以它是美素数。
给定一个区间,你能计算出这个区间内有多少个美素数吗?
Input
第一行输入一个正整数T,表示总共有T组数据(T <= 10000)。
接下来共T行,每行输入两个整数L,R(1<= L <= R <= 1000000),表示区间的左值和右值。
Output
对于每组数据,先输出Case数,然后输出区间内美素数的个数(包括端点值L,R)。
每组数据占一行,具体输出格式参见样例。
Sample Input
3
1 100
2 2
3 19
Sample Output
Case #1: 14
Case #2: 1
Case #3: 4
题解:欧拉筛相当于对素数进行了打表,但是这样求的话还是会超时,我们就需要多美素数打个表,相当于打了两次表
这样就减少了很多重复计算。
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define n 1000005
using namespace std;
int prime[1000005];
bool vis[1000005];
int sum1[1000005];
void oula() {
int cnt=0;
memset(prime,0,sizeof(prime));
memset(vis,false,sizeof(vis));
for(int t=2; t<=n; t++) {
if(!vis[t])
prime[cnt++]=t;
for(int j=0; j<cnt&&t*prime[j]<=n; j++) {
vis[t*prime[j]]=true;
if(t%prime[j]==0)
break;
}
}
}
void beautfulprime() {
sum1[0]=0;
sum1[1]=0;
for(int j=2; j<1000005; j++) {
sum1[j]=sum1[j-1];
long long int sum=0;
int k=j;
while(k) {
sum+=k%10;
k/=10;
}
if(vis[j]==false&&j!=1&&vis[sum]==false) {
sum1[j]++;
}
}
}
int main() {
int m;
cin>>m;
oula();
summ();
int a,b;
for(int t=0; t<m; t++) {
scanf("%d%d",&a,&b);
long long int s=0;
printf("Case #%d: %lld\n",t+1,sum1[b]-sum1[a-1]);
}
return 0;
}
最新文章
- FreeRTOS任务栈
- 调试SQLSERVER (一)生成dump文件的方法
- CSS 魔法系列:纯 CSS 绘制各种图形《系列六》
- Reporting Service报表项默认可见+号和-号的显示问题
- VBS_For Each...Next
- Jrtplib
- Asp.Net Mvc MapRoute .html不起作用(转)
- 用GDB调试多进程程序
- 用ssh建立机器之间的信任机制
- cocos2d-x游戏开发系列教程-坦克大战游戏之坦克的显示
- 出位的template.js 基于jquery的模板渲染插件
- 线性表的链式存储结构的实现及其应用(C/C++实现)
- 怎么让Word形状里的文字上下左右居中
- PHP中判断变量是否存在的方式
- 修改之前某次commit日志和内容
- bootstrap 折叠collapse失效
- java LinkedList(链表)
- 上机题目(0基础)- 用数组实现记事本(Java)
- Python访问MongoDB数据库
- 实现锁死的有滚动条的div的表格(datagird)
热门文章
- jersey简单总结与demo
- MySQL--->;数据库的简介和安装
- Spring JdbcTemplate中关于RowMapper的使用实例
- 详解GaussDB(for MySQL)服务:复制策略与可用性分析
- Docker 启动 Nginx
- Vue组件通信之子传父
- [leetcode/lintcode 题解] 前序遍历和中序遍历树构造二叉树
- Ambiguous mapping. Cannot map &#39;xxxController&#39; method
- C#开发笔记之07-如何实现交换2个变量的值而不引入中间变量?
- pygame绘制背景