可逆素数

/*
title:可逆素数
author:王玉杰
time:2015年10月2日12:20:56
*/
#include<stdio.h>
#include<math.h>
int check(int n)
{
	int i,flag=1;
	for(i=2;i<=sqrt(n);i++)
	{
		if(n%i==0)
		{
			flag=0;
			break;
		}
	}
	if(flag==1)
		return 1;
	else
		return 0;
}
int backin(int n)
{
	int s,a,b,c,d;
	a=n%10;//gewei
	b=n/10%10;//shiwei
	c=n/100%10;//baiwei
	d=n/1000;//qianwei
	s=a*1000+b*100+c*10+d;

	return s;
	

}
void main()
{
	int i,sum,back,ss=0;
	for(i=1000;i<=9999;i++)
	{
		sum=check(i);
		if(sum==1)
		{
			back=backin(i);
			if(back>i)
			{
			if(check(back))
			{
				ss++;
				printf("%4d...",i);
				if(ss%10==0)
					printf("\n");
			}
			}
		}



	}
}

### Python 实现可逆素数算法 以下是基于引用中的方法实现的一个完整的 Python 程序来解决给定范围内的可逆素数问题: #### 完整代码示例 ```python import math def is_prime(n): # 判断是否为素数 if n <= 1: return False if n == 2: return True if n % 2 == 0: return False for i in range(3, int(math.sqrt(n)) + 1, 2): if n % i == 0: return False return True def reverse_number(n): # 颠倒数字顺序 reversed_n = int(str(n)[::-1]) return reversed_n def find_reversible_primes(m, n): # 查找指定区间内的可逆素数 reversible_primes = [] for number in range(max(m, 2), n + 1): # 起始值至少为2,因为小于等于1的数不可能是素数 if is_prime(number) and is_prime(reverse_number(number)): reversible_primes.append(number) return reversible_primes # 主程序部分 if __name__ == "__main__": m = int(input()) n = int(input()) result = find_reversible_primes(m, n) if not result: # 如果结果为空 print("no exit") else: print(result) ``` --- #### 关键点解析 1. **素数判定函数 `is_prime`** - 使用试除法判断一个数是否为素数。 - 对于大于2的偶数直接排除[^1]。 - 循环仅需到平方根即可完成所有可能因子的检测。 2. **反转数字函数 `reverse_number`** - 将数字转换成字符串并利用切片操作[::-1]实现反转[^3]。 - 再将反转后的字符串转回整型以便后续处理。 3. **核心逻辑 `find_reversible_primes`** - 遍历 `[m, n]` 的每一个数值,先验证其本身是否为素数。 - 若为素数,则进一步验证其反转后是否仍为素数。 - 符合条件者加入最终的结果列表。 4. **边界情况考虑** - 当输入区间的起点 `m` 小于或等于1时,调整起始值至最小素数2[^5]。 - 如果没有任何符合条件的可逆素数存在,则输出 `"no exit"`。 --- #### 示例运行 ##### 输入样例1 ``` 50 100 ``` ##### 输出样例1 ``` [71, 73, 79, 97] ``` ##### 输入样例2 ``` 200 300 ``` ##### 输出样例2 ``` no exit ``` --- ### 问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值