P1013 数素数
2024-10-20 07:58:54
转跳点:
令 Pi 表示第 i 个素数。现任给两个正整数 M≤N≤104,请输出 PM 到 PN 的所有素数。
输入格式:
输入在一行中给出 M 和 N,其间以空格分隔。
输出格式:
输出从 PM 到 PN 的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。
输入样例:
5 27
输出样例:
11 13 17 19 23 29 31 37 41 43
47 53 59 61 67 71 73 79 83 89
97 101 103
这道题又把我写成了,不知道为什么边界值会明明说好从n->M闭区间,结果是n-1到m-1的闭区间。(主要还是因为自己是个蒟蒻,太菜了(*/ω\*))
估计素数从-1开始数的吧。
这道题就是先打出素数的表,然后一个for查找输出n->m之间的素数,除了格式控制有点麻烦其他都还简单。关于求素数的方法,点击狗头,不在此处细讲。
代码:
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <limits.h>
4 #define MAXSIZE (104743 + 500)
5
6 int Isprime[MAXSIZE];
7 int Prime[MAXSIZE];
8 int cnt;
9 void Euler_prime(int size);
10
11 int main(int argc, char const *argv[])
12 {
13 Euler_prime(MAXSIZE);
14
15 int start, end, count = 0;
16 ;
17 scanf("%d%d", &start, &end);
18
19 for (int i = start-1; i < end; i++)
20 {
21 count++;
22 printf("%d", Prime[i]);
23 if (10 == count)
24 {
25 putchar('\n');
26 count = 0;
27 continue;
28 }
29 if (end-1 == i)
30 {
31 continue;
32 }
33 putchar(' ');
34 }
35
36 return 0;
37 }
38
39 void Euler_prime(int size)
40 {
41 Isprime[0] = Isprime[1] = 1;
42 for (int i = 2; i <= MAXSIZE; i++)
43 {
44 if (!Isprime[i])
45 {
46 Prime[cnt++] = i;
47 }
48 for (int j = 0; j < cnt && i * Prime[j] < MAXSIZE; j++)
49 {
50 Isprime[i * Prime[j]] = 1;
51 if (!(i % Prime[j]))
52 {
53 break;
54 }
55 }
56 }
57 }
由于这道题c++和c的解法没什么区别,就不贴C++的代码了;
PTA不易,诸君共勉!
最新文章
- Linux下常见的IO模型
- Android开发中的输入合法性检验
- vs2012运行项目报未能加载文件或程序集“System.Web.Mvc, Version=4.0.0.1,Culture=neutral”问题和解决方法
- 【原创】本地通过IIS设置开发的localhost网站的域名改为个性域名方法
- JavaScript知识思维导图
- Block、委托、回调函数原理剖析(在Object C语境)——这样讲还不懂,根本不可能!
- JavaScript_object(基于map和数组练习)
- django(二)视图和URL配置
- C#图像处理(2):给图片加白边
- 0617 python 基础04
- 2015 8月之后";云计算";学习计划
- 转 Oracle DBCA高级玩法:从模板选择、脚本调用到多租户
- Python入门 - 生成随机数
- destoon 默认广告位代码
- SSM-网站后台管理系统制作(1)
- Spark进阶之路-Standalone模式搭建
- HP-UX平台Oracle启动实例遭遇:ORA-27154,ORA-27300,ORA-27301,ORA-27302
- Js学习(1)
- mysql 存储过程 与 循环
- SpringMVC关于ajax提交400错误(后台获取为null)