`

Java获取100以内符合勾股定理的直角三角形的数字组合

 
阅读更多

package com.healthengine.test;

 

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

 

/**

 * 计算100以内数字 哪些可以组成三角形

 * @author hs

 * @date 2019年2月26日 下午1:35:42

 */

public class TestOne {

 

/**

* 判断 2边之和是否大于第三边

* @param L 

* @param w 

* @param h  

* @return

*/

public static boolean oneStep (int L, int w, int h) {

if(L+w <= h || L+h <= w || w+h <= L) {

return true;

}

return false;

}

/**

* 判断是否符合勾股定理 

* @param L

* @param w

* @param h

* @return

*/

public static boolean twoStep(int L, int w, int h) {

Integer[] s = new Integer[] {L, w, h};

Arrays.sort(s);

//System.out.println(s[2]);

int ss0= s[0]*s[0];

int ss1 = s[1]*s[1];

int ss2 = s[2]*s[2];

if(ss0 + ss1 != ss2) {

return true;

}

 

return false;

}

public static List getNums(int maxNum) {

List<Integer[]> list = new ArrayList<Integer[]>();

for(int i=1; i<= maxNum;i++) {

for(int j = 1 ;j<= maxNum;j++) {

for(int k =1 ; k <= maxNum; k ++) {

// System.out.println(i+","+j+","+k);

if(i == j && j == k) {

continue;

}

if(oneStep(i, j, k)) {

continue;

}

if(twoStep(i, j, k)) {

continue;

}

Integer[] san = {i, j, k};

Arrays.sort(san);

if(list.size() == 0 && list.isEmpty()) {

list.add(san);

}

else {

boolean flag = true;

for (Integer[] iss : list) {

if(Arrays.equals(iss, san)) {

flag = false;

continue;

// System.out.println(san);

}

}

if(flag) {

list.add(san);

}

}

}

}

}

for (Integer[] integers : list) {

System.out.println(Arrays.toString(integers));

}

System.out.println("list2的大小"+list.size());

return list;

}

public static void main(String[] args) {

//twoStep(10, 15, 12);

//System.out.println(twoStep(3, 5, 4));

 

getNums(100);

}

}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics