美素数--undo
来源:互联网 发布:js while sleep 编辑:程序博客网 时间:2024/05/29 13:55
美素数
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 2124 Accepted Submission(s): 731
问题是这样的:一个十进制数,如果是素数,而且它的各位数字和也是素数,则称之为“美素数”,如29,本身是素数,而且2+9 = 11也是素数,所以它是美素数。
给定一个区间,你能计算出这个区间内有多少个美素数吗?
接下来共T行,每行输入两个整数L,R(1<= L <= R <= 1000000),表示区间的左值和右值。
每组数据占一行,具体输出格式参见样例。
31 1002 23 19
Case #1: 14Case #2: 1Case #3: 4
比往年题目有2个考点,1是素数筛法,2是数位拆解
/*
title:美素数
问题分类:素数筛法和数位拆分
*/
#include<stdio.h>
#include<string.h>
//用来存放标记过的素数
int prime[1000001];
//用来记录素数个数
int primeSize=0;
//用mark[i]来标记该数字,mark[i]=true时是非素数
//即标记过,表示该数字为非素数
bool mark[1000001];
//素数筛法
void init(){
memset(mark,0,sizeof(mark));
for(int i=2;i<1000001;i++){
if(mark[i]==true){
continue;
}
prime[primeSize++]=i;
for(int j=i+i;j<1000001;j+=i){
mark[j]=true;
}
}
}
//数位拆分
//用来存放每一位数字
int shu[8];
int chai(int x){
memset(shu,0,sizeof(shu));
int size=0;
while(x!=0){
shu[size++]=x%10;
x/=10;
}
int ans=0;
for(int i=0;i<size;i++){
ans+=shu[i];
}
return ans;
}
int main(){
freopen("in.txt","r",stdin);
printf("%d",chai(34));
int zu;
init();
while(scanf("%d",&zu)!=EOF){
for(int t=1;t<=zu;t++){
printf("Case #%d:",t);
int a,b;
scanf("%d%d",&a,&b);
for(int i=a;i<=b;i++){
if(mark[a]==false){
int ans=chai(i);
if(mark[ans]==false){
printf(" %d",i);
}
}
}
printf("\n");
}
}
return 0;
}
- 美素数--undo
- 美素数
- 美素数
- 美素数
- 美素数
- 美素数
- 美素数
- 美素数
- 美素数
- 美素数
- 美素数
- 美素数
- 金山居 美素数
- hdu 4548 美素数
- hdu 4548 美素数
- HDU4548:美素数
- hdu4548(美素数)
- HDOJ 4548 美素数
- json简单介绍
- Spring AOP操作action时无法注入,报空指针错误
- 深入javascript闭包
- 数据库面试题
- jms推荐款眼霜吧
- 美素数--undo
- ios动画-新浪微博app点击发微博按钮动画的实现
- 一个获取磁盘驱动器的MFC程序
- web 1
- Cookie和Session
- eclipse中安装tomcat插件
- <PY><core python programming笔记>C22 扩展Python
- 2
- hdu 4826(dp + 记忆化搜索)