利用Java将2019拆分成三个素数平方和的方法实例

网友投稿 240 2022-12-05


利用Java将2019拆分成三个素数平方和的方法实例

主要分析:

实例代码

package net.algchallenge;

import java.util.Arrays;

public class Split2019 {

public static void main(String[] args) {

final int N = (int) Math.sqrt(2019);//定义常量N限制素数的范围

int[] primeArr = new int[N];//定义primeArr数组用于保存质数

int count = -1;

Integer[][] arr = new Integer[N][3];//定义二维数组arr保存最后要输出的质数数组

for (int i = 2; i <= N; i++) {

boolean flag = false;

for (int j = 2; j <= Math.sqrt(i); j++) {

if (i % j == 0) {

flag = true;

break;

}

}

if (!flag) {

count++;

primeArr[count] = i;

}

}

int count2 = -1;

for (int i = 0; i <= N - 1; i++) {

for (http://int j = 0; j <= N - 1; j++) {

for (int x = 0; x <= N - 1; x++) {

if (primeArr[i] * primeArr[i] + primeArr[j] * primeArr[j] + primeArr[x] * primeArr[x] == 2019) {

Integer[] tempArr = {primeArr[i], primeArr[j], primeArr[x]};//将符合上面if条件的质数保存在tempArr数组中

Arrays.sort(tempArr);//排序,以便去重

boolean ifContain = false;//检测arr数组中是否存在该tempArr数组

for (int y = 0; y <= N - 1; y++){

http://if (Arrays.equals(arr[y], tempArr)){

ifContain = true;

break;

}

}

if (!ifContain) {//arr数组中不存在该tempArr数组才放进arr数组中

count2++;

arr[count2] = tempArr;

break;

}

}

}

}

}

Integer[] nullArr = {null, null, null};//因为前面二维数组长度为N,但是不可能全部装满,剩下的数组中自然是null

//因此定义nullArr数组用于筛选结果

for (int i = 0; i <= N - 1;cgoZAG i++)http:// {

if (!Arrays.equals(arr[i], nullArr)) {

System.out.println(String.format("2019 = %d^2 + %d^2 + %d^2", arr[i][0], arr[i][1], arr[i][2]));

}

}

}

}

结果:

总结


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java8新特性Stream的完全使用指南
下一篇:详细介绍Java阿里云的短信验证码实现
相关文章

 发表评论

暂时没有评论,来抢沙发吧~