回文质数 Prime Palindromes



心得:
不懂的东西要多百度,要考虑优化问题,看了其他一些大佬的代码才发现自己存在的一些问题,以下附上刚学到的东西:
一、概念:
回文素数是一个既是素数又是回文数的整数。回文素数与记数系统的进位制有关。
回文素数是指,对一个整数n(n≥11)从左向右和从右向左读其结果值相同且是素数,即称n为回文素数。
除了11,偶数位的数不存在回文质数。4位,6位,8位……数不存在回文质数。
最初几个回文素数:11,101,131,151,181,191,313,353,373,383,727,757,787,797,919,929……两位回文素数1个,三位回文素数15个,五位回文素数93个,七位回文素数668个,九位回文素数5172个。
二、当然是代码啦
/** 日期:2019.6.29* 作者:城主* 题目:[USACO1.5]回文质数 Prime Palindromes* 思路:用打表方法列出所有回文数,在输入* 范围之内再判断是不是质数。* 000,0 1 0,000*/
import java.util.Scanner;import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.awt.*;
public class happ {static boolean isPrime(int num)//判断是否素数{int i;double temp=Math.sqrt(num);for(i=2;i<=(int)(temp);i++){if(num%i==0){return false;}}return true; }static int getlength(int num)//判断长度{int n=1;while(num>9){num/=10;n++;}return n;}public static void main(String args[]) {Scanner scan=new Scanner(System.in);int a=scan.nextInt();int b=scan.nextInt();int p=getlength(a);int q=getlength(b);if(p<=1&&q>=1)//1位{if(a<=5&&b>=5){System.out.println(5);}if(a<=7&&b>=7){System.out.println(7);}}if(p<=2&&q>=2)//2位{if(a<=11&&b>=11){System.out.println(11);}}if(p<=3&&q>=3)//3位000{int temp;for(int n1=1;n1<=9;n1+=2){for(int n2=0;n2<=9;n2++){temp=100*n1+n2*10+n1;if(temp>=a&&temp<=b){if(isPrime(temp)){System.out.println(temp);}}}} }if(p<=5&&q>=5)//5位00 0 00{int temp;for(int n1=1;n1<=9;n1+=2){for(int n2=0;n2<=9;n2++){for(int n3=0;n3<=9;n3++){temp=10000*n1+n2*1000+n3*100+n2*10+n1;if(temp>=a&&temp<=b&&isPrime(temp)){System.out.println(temp);}}}} }if(p<=7&&q>=7)//7位000 0 000{int temp;for(int n1=1;n1<=9;n1+=2){for(int n2=0;n2<=9;n2++){for(int n3=0;n3<=9;n3++){for(int n4=0;n4<=9;n4++){temp=1000000*n1+n2*100000+n3*10000+n4*1000+n3*100+n2*10+n1;if(temp>=a&&temp<=b&&isPrime(temp)){System.out.println(temp);}}}}} }scan.close();}}
就这样吧,考试结束了,新一轮的坚持开始启程。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
