1411:区间内的真素数

不想你离开。 提交于 2020-01-21 05:50:16

1411:区间内的真素数

【题目描述】
找出正整数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

代码

#include <iostream>
using namespace std;

bool isprime(int n){
	if (n <= 1)
        return false;
    for (int i = 2; i * i <=n; i++)
        if (n % i == 0)
            return false;
    return true;
}
int fs(int n){
	int sum=0;
	while(n){
		sum=sum*10+n%10;
		n/=10;
	}
	return sum;
}

bool pd(int n){
	 return isprime(n) && isprime(fs(n));
}

int main(){
	int m,n,f=0;
	cin>>m>>n;
	
	for(int i=m;i<=n;i++){
		if(pd(i)) 
			if(f) cout<<","<<i;
			else {cout<<i;f=1;}
	}
	if(!f) cout<<"No";
	return 0;
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!