首页 / 算法 / Java经典算法之素数伴侣(华为机试)
Java经典算法之素数伴侣(华为机试)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java经典算法之素数伴侣(华为机试),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1362字,纯文字阅读大概需要2分钟。
内容图文
![Java经典算法之素数伴侣(华为机试)](/upload/InfoBanner/zyjiaocheng/601/2c3d189aed8345deb1c6fd6fa2e1de32.jpg)
import java.util.Scanner;
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader((System.in)));
String Str;
while ((Str=br.readLine())!=null) {
int n = Integer.valueOf(Str);
String[] numArr = br.readLine().split(" ");
int oddNum = 0;
List<Integer> inputNums = new ArrayList<>();
for(int i=0;i<numArr.length;i++){
if(Integer.valueOf(numArr[i])%2==1){ //奇数
oddNum++;
}
inputNums.add(Integer.valueOf(numArr[i]));
}
//奇数数组
int[] oddArr = new int[oddNum];
//偶数数组
int[] doubArr = new int[n-oddNum];
int oddIndex=0,doubIndex=0;
for(int i:inputNums){
if(i%2==0){ //偶数
doubArr[doubIndex++]=i;
}else{ //奇数
oddArr[oddIndex++]=i;
}
}
//开始组合
int count = 0;
int nums[] = new int[n-oddNum];
boolean[] use;
for(int i=0;i<oddArr.length;i++){
use = new boolean[n-oddNum];
if(find(oddArr[i],doubArr,nums,use)){
count++;
}
}
System.out.println(count);
}
}
//奇偶数加和判定素数
private static boolean find(int odd,int[] douArr,int[]nums,boolean[] use){
for(int j=0;j< douArr.length;j++){
if(isPrime(odd+douArr[j]) && !use[j]){
use[j] = true;
if(nums[j]==0 || find(nums[j],douArr,nums,use)){//再次判定
nums[j]=odd;
return true;
}
}
}
return false;
}
//判定是否为素数
private static boolean isPrime(int a){
if(a<=1){
return false;
}
for(int i=2;i<=a-1;i++){
if(a%i==0){
return false;
}
}
return true;
}
}
内容总结
以上是互联网集市为您收集整理的Java经典算法之素数伴侣(华为机试)全部内容,希望文章能够帮你解决Java经典算法之素数伴侣(华为机试)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。