首页 > 试题广场 >

素数回文

[编程题]素数回文
  • 热度指数:15793 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

现在给出一个素数,这个素数满足两点:

1、  只由1-9组成,并且每个数只出现一次,如13,23,1289

2、  位数从高到低为递减或递增,如2459,87631。

请你判断一下,这个素数的回文数是否为素数(13的回文数是131,127的回文数是12721)。


输入描述:
输入只有1行。
第1行输入一个整数t,保证t为素数。
数据保证:9<t<109


输出描述:
输出一行字符串,如果t的回文数仍是素数,则输出“prime”,否则输出"noprime"。
示例1

输入

13

输出

prime

说明

13的回文数是131,131是素数
示例2

输入

17

输出

noprime

说明

17的回文数是171,171不是素数(因子有3)

备注:
素数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。
素数的回文数为题意中的定义,1331不是素数的回文数。
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in  = new Scanner(System.in);
        int n = in.nextInt();
        long pali = palindrome(n);
        if (isprime(pali)){
            System.out.println("prime");
        } else {
            System.out.println("noprime");
        }
    }

    public static long palindrome(int n){
        String num = Integer.toString(n);
        StringBuilder palinum = new StringBuilder(num);
        for (int i = num.length()-2; i >= 0; i--) {
            palinum.append(num.charAt(i));
        }
        return Long.parseLong(palinum.toString());
    }

    public static boolean isprime(long pali){
        int count = 0;
        for (int i = 2; i < Math.sqrt(pali); i++) {
            if (pali % i == 0){
                count++;
            }
        }
        return count == 0;
    }
}

发表于 2024-10-14 15:02:54 回复(0)

import java.util.*;

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
long a = getnumber(n);
if(isPrime(a)){
System.out.println("prime");
}
else{
System.out.println("noprime");
}
}

public static boolean isPrime(long a){
    if(a == 1){
        return false;
    }
    for(long i = 2 ; i*i <= a ;i++){
        if(a % i == 0){
            return false;
        }
    }
    return true;
}

public static long getnumber(int n){
    int s;
    long sum = (long)n;
    n /= 10;
    while(n != 0){
        s = n%10;
        sum = sum*10 + s;
        n /= 10;
    }
    return sum;
}

}

发表于 2022-05-20 12:36:33 回复(0)

问题信息

难度:
3条回答 3655浏览

热门推荐

通过挑战的用户

查看代码
素数回文