电商网站开发数据库表/seo北京公司
题目描述
找出正整数 M 和 N 之间(N 不小于 M)的所有真素数。
真素数的定义:如果一个正整数 P 为素数,且其反序也为素数,那么 P 就为真素数。
例如,11,13 均为真素数,因为 11 的反序还是为 11,13 的反序为 31 也为素数。
输入格式
输入两个数 M 和 N,空格间隔。
输出格式
按从小到大输出 M 和 N 之间(包括 M 和 N)的真素数,逗号间隔。如果之间没有真素数,则输出 No。
输入输出样例
输入
10 35
输出
11,13,17,31
说明/提示
1≤M≤N≤100000
源码
import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner sc = new Scanner(System.in);int m = sc.nextInt();if(m==1) m=2;int n = sc.nextInt();int[] prime = new int[n-m+1];//存储素数int k = 0;//prime数组的下标int[] result = new int[n-m+1];//存储输出结果int r = 0;//result数组的下标//生成m和n之间的素数for(int i=m;i<=n;i++) {boolean flag = true;for(int j=2;j<=Math.sqrt(i);j++) {if(i%j==0) {flag = false;break;}}if(flag) {prime[k]=i;k++;}}//判断是不是真素数for(int i=0;i<k;i++) {String strprime = "";if(prime[i]!=0 && prime[i]>9) {Integer tmp = prime[i];String str = tmp.toString();//将整形转换成字符串for(int j=str.length()-1;j>=0;j--) {String ch = str.substring(j,j+1);//逆序取出字符strprime += ch;//构造逆序字符串}Integer retmp = new Integer(strprime);//将字符串转换成字符boolean flag2 = true;//判断逆序的数是不是素数for(int j=2;j<=Math.sqrt(retmp);j++) {if(retmp%j==0) {flag2 = false;break;}}if(flag2) {result[r] = prime[i];//将结果存储到数组里面r++;}}}//输出结果if(r==0) {System.out.println("No");}else {for(int i=0;i<r;i++) {if(result[i]!=0) {System.out.print(result[i]);if(i<r-1) {//如果不是最后一个元素则输出逗号System.out.print(",");}}}} }
}