神奇数

来源:互联网 发布:看淘宝服务器的时间 编辑:程序博客网 时间:2024/04/29 19:45
[编程题] 神奇数

时间限制:1秒

空间限制:32768K

给出一个区间[a, b],计算区间内“神奇数”的个数。
神奇数的定义:存在不同位置的两个数位,组成一个两位数(且不含前导0),且这个两位数为质数。
比如:153,可以使用数字3和数字1组成13,13是质数,满足神奇数。同样153可以找到31和53也为质数,只要找到一个质数即满足神奇数。 
输入描述:
输入为两个整数a和b,代表[a, b]区间 (1 ≤ a ≤ b ≤ 10000)。


输出描述:
输出为一个整数,表示区间内满足条件的整数个数

输入例子:
11 20

输出例子:
6
实现如下:比较繁琐
import java.util.Scanner;public class Main {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stub     Scanner in = new Scanner(System.in);     int a=in.nextInt();     int b=0;     if(in.hasNext()){     b=in.nextInt();     }  //判断取两位后数字是否为质数     //(1)取两位数组合     int count=0;     for (int value = a; value <= b; value++) {//从[a,b]区间取值     String s = String.valueOf(value);     char[] c = s.toCharArray();     boolean is=false;     boolean is1=false;     for (int i = 0; i < c.length; i++) {     if(is==true||is1==true){break;}for (int j = i+1; j < c.length; j++) {is=false;                    //正方向  int iszhishu=(c[i]-'0')*10+(c[j]-'0');                    //不能以0为先导  if(iszhishu/10!=0){is=iszhishu(iszhishu);}else{is=false;}                    //反方向  int iszhishu1=(c[j]-'0')*10+(c[i]-'0');                    //不能以0为先导  if(iszhishu1/10!=0){is1=iszhishu(iszhishu1);}else{is1=false;}if(is==true||is1==true){count++;                        break;}}}}     System.out.println(count);}    //判断是否为质数  private static boolean iszhishu(int iszhishu) {// TODO Auto-generated method stub    boolean  flag=true;for (int i = 2; i < iszhishu/2; i++) {if(iszhishu%i==0){   flag=false;   break;}}return flag;}}


原创粉丝点击