NOIP学习之函数与过程抽象:97.区间内的真素数

测试链接
总时间限制: 1000ms 内存限制: 65536kB
描述
找出正整数 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>
#include<cmath>
using namespace std;
int bit(int);
int judge(int);
int main()
{
    int r,i,m,n,j,num=0,digit,value,tol=0;
    cin>>m>>n;
    int a[1000]={0};
    bool prime=false;
    
 	for (i=m;i<=n;i++)
 	{ 			
		if (judge(i))
 		{
 			r=i;
 			tol=0;
			for (int j=0;j<bit(i);j++)
			{
				digit=r%10;
				value=digit*pow(10,bit(i)-1-j);
				tol+=value;
				r/=10;
			}
			if (judge(tol))
			{
				a[num++]=i;
				prime=true;
			}
			else
				continue; 
		}
		else 
			continue; 	
	}
	if (prime==false)
		cout<<"No";
	 
	for (i=0;i<num;i++)
	{ 
		if (i!=num-1)
			cout<<a[i]<<",";
		else 
			cout<<a[i];		
	}
   	return 0;
}
int judge(int x)
{
	if (x==1)
		return 0;
	for (int j=2;j<=sqrt(x);j++)
		if (x%j==0)
			return 0;
	return x;	
}
int bit(int y)
{
	int sum=0;
	do
	{
		sum++;
		y/=10;		
	}while(y!=0);
	return sum;
}	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值