查看: 1129|回复: 3

[C/C++] 1411:区间内的真素数

[复制链接]

1

技术

25

魅力

7

原创

管理员

Rank: 9Rank: 9Rank: 9

积分
11343
人气
297
分享
42

论坛元老优秀版主活跃会员最佳新人灌水之王

发表于 2021-9-19 23:56:54 | 显示全部楼层 |阅读模式
【题目描述】
找出正整数M和N之间(N不小于M)的所有真素数。

真素数的定义:如果一个正整数P为素数,且其反序也为素数,那么P就为真素数。

例如,11,13均为真素数,因为11的反序还是为11,13的反序为31也为素数。

【输入】
输入两个数M和N,空格间隔,1<=M<=N<=100000。

【输出】
按从小到大输出M和N之间(包括M和N)的真素数,逗号间隔。如果之间没有真素数,则输出No。

【输入样例】
10 35
【输出样例】
11,13,17,31

【代码】
[C++] 纯文本查看 复制代码
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
bool IsPrime(int num) {
	if (num < 2) return false;
	if (num % 2 == 0 && num > 2) return false;
	for (int i = 3; i * i <= num; i += 2) {
		if (num % i == 0) return false;
	}
	return true;
}

int intrev(int num) {
	int result = 0;
	while (num) {
		result = result * 10 + num % 10;
		num /= 10;
	}
	return result;
}

int main() {
	int M, N;
	bool print = false;
	scanf("%d %d", &M, &N);

	for (int i = M; i <= N; i++) {
		if (IsPrime(i) && IsPrime(intrev(i))) {
			if (print) {
				putchar(',');
			}
			else {
				print = true;
			}
			printf("%d", i);
		}
	}
	if (!print) printf("No");
}


Just do it.

1

技术

7

魅力

2

原创

管理员

Rank: 9Rank: 9Rank: 9

积分
6908
人气
208
分享
49

灌水之王论坛元老优秀版主活跃会员

发表于 2021-9-21 20:11:55 | 显示全部楼层
这个比纯粹素数还简单
论坛事务联系邮箱 henry217@x64bbs.cn

1

技术

25

魅力

7

原创

管理员

Rank: 9Rank: 9Rank: 9

积分
11343
人气
297
分享
42

论坛元老优秀版主活跃会员最佳新人灌水之王

 楼主| 发表于 2021-9-21 20:16:18 | 显示全部楼层
henry217 发表于 2021-9-21 20:11
这个比纯粹素数还简单

纯粹素数比这个简单多了
Just do it.

1

技术

7

魅力

2

原创

管理员

Rank: 9Rank: 9Rank: 9

积分
6908
人气
208
分享
49

灌水之王论坛元老优秀版主活跃会员

发表于 2021-9-21 20:17:52 | 显示全部楼层
skystars 发表于 2021-9-21 20:16
纯粹素数比这个简单多了

反序比较难搞,尤其不知道长度
论坛事务联系邮箱 henry217@x64bbs.cn
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表