给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。
Posted 马云12314
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。相关的知识,希望对你有一定的参考价值。
问题描述:给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输入值小于1000。如,输入为10,程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7))
附算法代码:
public class PrimeNumber { //判断是否是质数 protected boolean isPrimeNumber(int num){ if(num == 2) return true;//2特殊处理 if(num < 2 || num % 2 == 0) return false;//识别小于2的数和偶数 for(int i=3; i<=Math.sqrt(num); i+=2){ if(num % i == 0){//识别被奇数整除 return false; } } return true; } //获取质数和的个数 public int getPNSum(int num) throws Exception{ if(num < 1 || num >= 1000){ throw new Exception("请输入正整数并小于1000"); } int sum = 0; //单独考虑2 if(isPrimeNumber(num - 2)){ ++sum; } for(int i=3; i<=(num/2); i+=2){ if(isPrimeNumber(i) && isPrimeNumber(num - i)){ ++sum; } } return sum; } //测试代码 public static void main(String[] args) { try { PrimeNumber pn = new PrimeNumber(); int sum = pn.getPNSum(10); System.out.println("结果:"+sum); } catch (Exception e) { e.printStackTrace(); } } }
以上是关于给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。的主要内容,如果未能解决你的问题,请参考以下文章
用java将一个正整数拆分成若干个正整数的和,问有多少种分法?
对输入的任意正整数N,输出2到N之间所有质数及质数的个数 用VFP程序做