筛选法求素数

来源:互联网 发布:c语言long int范围 编辑:程序博客网 时间:2024/05/17 22:58

美素数
Time Limit: 1000 ms / Memory Limit: 32768 kb
Description

  小明对数的研究比较热爱,一谈到数,脑子里就涌现出好多数的问题,今天,小明想考考你对素数的认识。
  问题是这样的:一个十进制数,如果是素数,而且它的各位数字和也是素数,则称之为“美素数”,如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
Source

source
2013金山西山居创意游戏程序挑战赛——初赛(2)
Submit代码

int a[1000005] = { 1,1 };
int b[1000004] = { 0 };
int jud(int k);
int main()
{
int i, j;
int t, sum, tem;
int n, l, r;
int count=0;
for (i = 2;i <= 500000;i++)
for (j = 2 * i;j <= 1000000;j += i)
a[j] = 1;
for (i = 2;i <= 1000000;i++)
{
if (a[i] == 1)continue;
sum = 0;
t = i;
do {
sum += t % 10;
t /= 10;
} while (t != 0);
tem = jud(sum);
if (tem == 1)a[i] = 2;
}
for (i = 1;i <= 1000000;i++)
{
if (a[i] == 2)count++;
b[i] = count;
}
scanf_s(“%d”, &n);
for (i = 1;i <= n;i++)
{
scanf_s(“%d%d”, &l, &r);
printf(“Case #%d: %d\n”, i,b[r]-b[l-1]);
}
return 0;

}
int jud(int k)
{
int i, p;
for (i = 2;i <= k;i++)
if (k%i == 0)break;
if (i == k) p = 1;
else p = 2;
if (k == 2)p = 1;
return p;
}

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 西晒的墙面很烫怎么办 儿童房颜色太粉了怎么办? 小孩在家里偷钱怎么办 脾气不好的猫该怎么办 二年孩子偷钱怎么办 孩子偷钱2000报警怎么办? 我儿子十岁老是偷钱怎么办 13孩子偷同学钱怎么办 孩子偷同学的钱怎么办 儿子十四岁了老偷钱怎么办 发现初中生的儿子偷钱怎么办 被亲戚怀疑儿子偷钱怎么办 房门选的太白了怎么办 大厅地砖颜色比墙砖浅怎么办 房屋外墙渗水物业不管怎么办 走丢了怎么办教学反思 托班教案迷路了怎么办 大班安全教案遇到小偷怎么办 小班孩子舞台表演找不到位置怎么办 懂你英语学完了怎么办 小班社会走丢了怎么办 帮小老鼠搬鸡蛋怎么办 小老鼠还能怎么办鸡蛋 中班教案走丢了怎么办 走丢了怎么办可后反思 社会走丢了怎么办教案 孩子一直不吃幼儿园的饭怎么办 大班安全游泳抽筋怎么办反思 汤洒了怎么办教学反思 迷路了怎么办小班详案 大班牙又痛又摇怎么办 大班安全教案着火了怎么办 小班社会生病了怎么办反思 脚扭伤了怎么办的反思 中班安全迷了眼怎么办 15个月的小孩长泡疹怎么办 墨盒加错颜色墨水怎么办 墨盒颜色加错了怎么办 uV打印有色差是怎么办 cmyk和rgb有色差怎么办 染头发新长出来怎么办