2018校招真题编程题(爱奇艺)回文素数

题目描述
如果一个整数只能被1和自己整除,就称这个数是素数。
如果一个数正着反着都是一样,就称为这个数是回文数。例如:6, 66, 606, 6666
如果一个数字既是素数也是回文数,就称这个数是回文素数
牛牛现在给定一个区间[L, R],希望你能求出在这个区间内有多少个回文素数。
输入描述:
输入包括一行,一行中有两个整数(1 ≤ L ≤ R ≤ 1000)
输出描述:
输出一个整数,表示区间内回文素数个数。
示例1
输入
100 150
输出
2

package com.qiye;

import java.util.Scanner;
import java.util.Stack;

public class PrimeAndCircleNum {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int x = scanner.nextInt();
        int y = scanner.nextInt();
        int count = 0;
        for(int i = x;i <=y;i ++){
            boolean isPrime = false;
            boolean isCircle = false;
            isPrime = judgePrime(i);
            isCircle = judgeCircle(i);
//            System.out.println("现在的i是:" + i +" 它是素数吗? " + isPrime + " 它是回文数吗? " + isCircle);
            if(isPrime && isCircle){
                count++;
            }
        }
        System.out.println(count);
    }
    public static boolean judgePrime(int num){
        if(num < 2) return false;
        if(num == 2) return true;
        if(num % 2 == 0) return false;
        for(int i=3;i*i <= num;i += 2){
            if(num % i == 0){
                return false;
            }
        }
        return true;
    }
    public static boolean judgeCircle(int num){
        String s = num + "";
        char characters[] = s.toCharArray();
        Stack<Character> stack = new Stack<>();
        for(int i=0;i < characters.length;i ++){
            stack.push(characters[i]);
        }
        String s1 = "";
        while (!stack.isEmpty()){
            s1 += stack.pop();
        }
        if(s1.equals(s)){
            return true;
        }
        return false;
    }
}

这题挺好的,两个基本算法的综合,回文数和素数判断。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值