• JAVA:实现是否为Prime素数算法(附完整源码)


    JAVA:实现是否为Prime素数算法

    package com.thealgorithms.maths;
    
    import java.util.Scanner;
    
    public class PrimeCheck {
    
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
    
            System.out.print("Enter a number: ");
            int n = scanner.nextInt();
            if (isPrime(n)) {
                System.out.println("algo1 verify that " + n + " is a prime number");
            } else {
                System.out.println("algo1 verify that " + n + " is not a prime number");
            }
    
            if (fermatPrimeChecking(n, 20)) {
                System.out.println("algo2 verify that " + n + " is a prime number");
            } else {
                System.out.println("algo2 verify that " + n + " is not a prime number");
            }
            scanner.close();
        }
    
        /**
         * *
         * Checks if a number is prime or not
         *
         * @param n the number
         * @return {@code true} if {@code n} is prime
         */
        public static boolean isPrime(int n) {
            if (n == 2) {
                return true;
            }
            if (n < 2 || n % 2 == 0) {
                return false;
            }
            for (int i = 3, limit = (int) Math.sqrt(n); i <= limit; i += 2) {
                if (n % i == 0) {
                    return false;
                }
            }
            return true;
        }
    
        /**
         * *
         * Checks if a number is prime or not
         *
         * @param n the number
         * @return {@code true} if {@code n} is prime
         */
        public static boolean fermatPrimeChecking(int n, int iteration){
          long a;
          int up = n - 2, down = 2;
          for(int i=0;i<iteration;i++){
            a = (long)Math.floor(Math.random()*(up - down + 1) + down);
            if(modPow(a,n-1,n) != 1){
              return false;
            }
          }
          return true;
        }
    
    
        private static long modPow(long a, long b, long c){
            long res = 1;
            for (int i = 0; i < b; i++)
            {
                res *= a;
                res %= c;
            }
            return res % c;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
  • 相关阅读:
    逻辑漏洞----权限类漏洞
    vmware NAT模式配置方式
    【uniapp】本地资源图片无法通过 WXSS 获取,可以使用网络图片,或者 base64,或者使用image标签
    【牛客刷题】前端--JS篇(二)
    leetcode 题目
    redis-plus-plus访问REDIS集群
    【面试:并发篇39:多线程:线程池】ThreadPoolExecutor类-提交、停止
    数据结构薄弱知识点
    认识springboot搭建
    寄存器与ROM与RAM
  • 原文地址:https://blog.csdn.net/it_xiangqiang/article/details/126291361