本文主要是介绍一个偶数总能表示两个素数之和,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
关于这次此小测试,主要求的是素数,还有当时素数的时候,另外一个数也需要是素数。
输入一个偶数,然后判断在这在这个范围内的素数。
先判断是否是素数,如果是素数,就将偶数减去这个素数,在判断减去后的数是否也为素数,如果也为素数,则输出
步骤:1,输入数值n
2.利用while(n>1)n-2,
3.判断【0,n】之间的范围内的数值。
4.每减去2(因为偶数为除了二外都不为素数),就判读这个数是否为素数,如果为素数,则将n减去这个素数,再判断减去后的数值是否也为素数,如果是的话,就输出
dex==0为素数,dex==1不为素数
代码:
public static int dex=0;public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("输入一个偶数:");Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int in = n;n--;xunhuan:while(n>1) {find(n);if(dex==0) {dex = 0;//将其定义为原来的数值,在放入判断素数函数中是否为素数。find(in-n);if(dex==0)System.out.println(in+"这个偶数可以被素数"+n+"和素数"+(in-n)+"相加得出!");}dex=0;n=n-2;//每次都为奇数,不用算偶数if(n<(in/2))break xunhuan;}}private static void find(int n) {//求素数函数// TODO Auto-generated method stubint i;for(i = 2;i<n;i++) {if(n%i==0)dex=1;//dex为1说明不是素数}}
此代码有运用了Math.sqrt(double n),这是一个求平方根函数,Math.sqrt(i)就是调用Math函数库里的sqrt()方法,对i进行处理。具体就是对i开方, i=2时也就是根号2=1.414。
用开平方根函数的好处
你想想吧,如果判断100是否为素数,那就是用2、3、4……去除100,只要有一个被整除了,那100就不是素数!sqrt(100)是求100的平方根的意思,100的平方根是10,用2、3、4……10去除100就可以了,用不着再用11、12、13……99去除100了。为什么呢?因为一个数是它的两个平方根之积,用其中一个平方根之内的各个数遍历了,难道还有漏网的数未去除“这个数”?比如100吧,找个大于其平方根10的好说的数20为例,说没有必要用20去除100了就是因为你已经用5除过了,100不是素数!
public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("输入");Scanner scanner = new Scanner(System.in);int num = scanner.nextInt();for(int i =2;i<num;i++) {int j = num-i;//另一个数为另一个数得出if(isPrime(i)&&isPrime(j)) {//当两个都为素数时System.out.println("偶数"+num+"="+i+"+"+j);}}}private static boolean isPrime(int n) {// TODO Auto-generated method stubboolean flag = true;if(n<2)return false;else {for(int i =2;i<=Math.sqrt(n);i++) {//为求平方根。if(n%i==0) {flag=false;//为false的时候,则说明不是素数break;}}}return flag;}
这篇关于一个偶数总能表示两个素数之和的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!