dabocaiqq
dabocaiqq
2020-05-17 09:19
采纳率: 66.6%
浏览 205

Java语言高分悬赏:3 5 两个数字相差2,并且都是素数,类似的还有 17 19...等,请用程序计算10000以内这样的素数对

Java语言高分悬赏:3 5 两个数字相差2,并且都是素数,类似的还有 17 19...等,请用程序计算10000以内这样的素数对

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • huazhan321
    已采纳
    算法思路,循环,数据区间为 1-1000 ,步长为2,只处理奇数即可
    再判断当前 i 和 i+2 这两个数是否为素数,满足就可以输出了。
    

    代码就不贴了,楼主自己实现哈。

    点赞 评论
  • Grain_Rain_tx
    谷雨_tx 2020-05-17 09:48
    public class FindPrimeGroup {
        public static void main(String[] args) {
            printPrimeGroup(10000);
        }
    
        //求解素数对
        public static void printPrimeGroup(int maxNum){
            for (int i = 2; i <= maxNum; i++) {
                int j = i-2;
                if(checkIsPrime(i) && checkIsPrime(j)){
                    System.out.println("素数对为:"+j+","+i);
                }
            }
        }
        //判断是否为素数
        public static boolean checkIsPrime(int num){
            if(num<2){
                return false;
            }
            for (int i = 2; i <= Math.sqrt(num); i++) {
                if(num % i ==0){
                    return false;
                }
            }
            return true;
        }
    }
    
    点赞 评论
  • qybao
    qybao 2020-05-18 16:19

    试试看

    public class Sample {
        public static void main(String[] args) {
            try {
                for (int i=5; i<=10000; i+=2) {
                    if (isPNum(i-2) && isPNum(i)) {
                        System.out.printf("(%d,%d)\n", i-2, i);
                    }
                }
            } catch (Throwable e) {
                e.printStackTrace();
            }
        }
    
        public static boolean isPNum(int n) {
            if (n<=1) return false;
            else if (n==2) return true;
            else if (n%2==0) return false;
            for (int i=3; i*i<=n; i+=2) {
                if (n%i==0) return false;
            }
            return true;
        }
    }
    
    点赞 评论

相关推荐