鱼C论坛

 找回密码
 立即注册
查看: 4420|回复: 4

求助一道编写方法判断超级素数的题目!

[复制链接]
发表于 2020-12-24 19:29:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目:
超级素数的另一种概念:如果2位数素数去掉高位数字后是1位数素数,则该数是超级素数;m(m>1)位超级素数去掉最高位后是m-1位超级素数。
编写类a.A,添加方法static boolean isSuperPrime(int n),如果n是超级素数则返回true,否则返回false。

感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-25 14:48:23 | 显示全部楼层
import java.lang.Math;
import java.util.Scanner;

public class A {
    public static void main(String[] args) {
        int num;
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个数字:");
        num = sc.nextInt();
        sc.close();
        if (isSuperPrime(num)){
            System.out.println("是超级素数");
        }
        else{
            System.out.println("不是超级素数");
        }
    }
    static boolean isSuperPrime(int n){
        int i=1,flag=0;
        while (true){
            if (n%i == n){
                break;
            }
            i*=10;
            flag++;
        }
        if(isPrime((int)(n%(Math.pow(10, (flag - 1)))))){
            return true;
        }
        else{
            return false;
        }
    }
    static boolean isPrime(int n){
        if (n < 1){
            System.out.println("error");
        }
        if (n == 1){
            return true;
        }
        if (n%2 == 0){
            return false;
        }
        for (int i = 2; i < n/2;i++){
            if (i%2==0){
                continue;
            }
            if (n%i == 0){
                return false;
            }
        }
        return true;
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-5 21:21:09 | 显示全部楼层
本帖最后由 伍陆柒5678 于 2021-1-5 21:41 编辑

step1 : 先判断这个n是不是素数
    Case1 : 不是直接返回false
    Case2 : 是素数,再判断减一位是不是素数(用 / 10得出的结果判断,这是减最低位,如果减最高位,先去求有多少位,然后取10余数相加这种方式)
step2 : 写一个helper function判断是不是素数
用一个for loop, i 从 2 一直到 根号 n(不需要全部判断,节约时间), 每次加一,在每次循环里,判断 % i 是不是得 0, 得0的不是素数,不得0的返回true




想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-1-7 10:54:10 | 显示全部楼层
本帖最后由 伍陆柒5678 于 2021-1-7 11:01 编辑

public class A{
        public static boolean isSuperPrime (int n) {
                if (n <= 10) {
                        return false;
                }
                if (!isPrime(n)) {
                        return false;
                }
                int mul = 0;
                int newInput = 0;
                while (n / 10 != 0) {
                       multiple = mul * 10;
                       mul++;
                       if (multiple == 0) {
                              newInput += n % 10;
                       } else {
                              newInput += (n % 10) * mutiple;
                       }       
                      n = n / 10;
                }
                if (!isPrime(newInput)) {
                     return false;
                }
                return true;
          }
        private static boolean isPrime (int n) {
                if (n < 2) {
                        return false;
                }
                if (n == 2) {
                        return true;
                }
                for (int i = 2; i * i <= n; i++) {
                               if (n % i == 0) {
                                return false;
                               }
                }
                       return true;
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-15 12:51:13 | 显示全部楼层
class Prime{
    public static boolean isSuperPrime(int n){
        String str=String.valueOf(n);
        String str1=str.substring(1);
        int num=Integer.parseInt(str1);
        System.out.println("去掉最高位:"+num);
        return isPrime(num);

    }
    public static boolean isPrime(int n){
        if(n<0||n==1||n==0){
            return false;
        }
        for(int i=2;i<=Math.sqrt(n);i++){
            if(n%i==0){
                return false;
            }
        }
        return true;
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 23:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表