筛选法求素数
来源:互联网 发布: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;
}
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数/
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 判断瑞年小程序
- 常用adb指令
- hdu4927 大数
- fastboot系统更新代码流程分析
- 侧拉菜单
- 筛选法求素数
- 视频主观质量评价工具:MSU Perceptual Video Quality tool
- STM32F10x时钟相关分析
- Python的任务调度模块APScheduler学习2(作业操作)
- Oracle 存过初始化
- HTML的标签
- java.lang.IllegalStateException: Underflow in restore
- MFC总结之CListCtrl用法及技巧
- EL表达式