OJ--寻找组成偶数的相差最小的质数

来源:互联网 发布:飞升本命元魂升级数据 编辑:程序博客网 时间:2024/06/03 18:31
任何一个偶数都可以看作是由两个质数组成的,要求打印出相差最小的两个质数
样例输入:20
样例输出:7 13
import java.util.*;public class Main{public static void main(String[] args){Scanner sc=new Scanner(System.in);//while(sc.hasNext()){int n=sc.nextInt();System.out.print(findNum(n));//}sc.close();}    public static String findNum(int n){int[] a=new int[10000];int temp=2;//数组中存入一定数量的素数for(int k=1;k<10000;k++){for(int i=temp;i<100000;i++){if(istrue(i)){   a[k]=i;    temp=a[k]+1;break;}}}//找出答案所在的区间for(int i=0;i<10000;i++){if(a[i]==n/2){return n/2+" "+n/2;//System.out.print(a[i]+" "+a[i]);} if(a[i]<n/2&&a[i+1]>n/2){int j=i+1;int sum=a[i]+a[j];while(sum!=n){ if(sum<n){j++;sum=a[i]+a[j];} if (sum>n){i--;sum=a[i]+a[j];}}return a[i]+" "+a[j];//System.out.print(a[i]+" "+a[j]);}}return "";}    //素数判断public static boolean istrue(int n){boolean istrue=true;for(int j=2;j<=Math.sqrt(n);j++){if(n%j==0){istrue=false;}}return istrue;}  }

0 0
原创粉丝点击