区间内的真素数

版权声明:请勿轻易转载 https://blog.csdn.net/weixin_43838723/article/details/84674389

1411:区间内的真素数


时间限制: 1000 ms         内存限制: 65536 KB
提交数: 3319     通过数: 1382 

【题目描述】

找出正整数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

【来源】

http://ybt.ssoier.cn:8088/problem_show.php?pid=1411

源代码

#include<iostream>
#include<cmath>
using namespace std;

int prime(int x)//Judge a prime number
{
	int i;
	bool flag=true;
	
	if(x==0||x==1)
	    flag=false;
	
	for(i=2;i<=sqrt(x);i++)
		if(x%i==0)
			flag=false;

    return flag;
}

int fun(int y)//Switch the number order
{
	int sum=0;
	
	while(y>0)
	{
		sum=sum*10+y%10;
		y/=10;
	}
	
	return sum;
} 

int main()
{
	int m;
	int n;
	cin>>m>>n;
	
	int i;
	int ans=0;
	int a[100000]={0};//Array initialization
	
	for(i=m;i<=n;i++)
		if(prime(i)&&prime(fun(i)))
		{
			a[ans]=i;//Reads into an array
			ans++;
		}
		
	if(ans==0)
	   cout<<"No";//Output "No" if No true prime number is found
	else
	{
		for(i=0;i<ans;i++)
		{
			cout<<a[i];
			
			if(i!=ans-1)//The last number is not followed by a comma
			   cout<<",";
		}
	}
				
	return 0;
}

有大佬知道怎么直接去掉最后一个逗号吗?

猜你喜欢

转载自blog.csdn.net/weixin_43838723/article/details/84674389