java基础算法学习之完全数的求解

这篇文章说说完全数的求解,这里我想说的是这个代码的思路,因为要实现这个功能的话,真的不难,完全数,就是所有的因子相加等于这个数,那么这样的数就被称为是完全数,这篇代码中的思想是在一个范围内,每次遍历一个数,然后保存两次这个数,一个用于是求因子,另一个求是否最后和为0,感觉如果是我第一次想的话,应该是想不到的。

代码:

package com.jk.perfectdemo;

import java.util.Arrays;
/**
 * 
 * @author jk,这段代码写的是完全数的求解,完全数就是因子相加等于这个数的数,代码不多,但是我觉的思想还可以,所以就写了
 *
 */
public class test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//找出5000以内的完全数
		perfectNum(5000);

	}

	private static void perfectNum(int rangge) {
		long[] p=new long[300];
		long i,j,sum,num;
		int k,count;
		//遍历每个数
		for(i=0;i<rangge;i++){
			count=0;
			num=i;
			sum=num;
			//看每个数是否符合完全数的条件
			for(j=1;j<num;j++){
				if(num%j==0){
					p[count++]=j;
					sum=sum-j;
				}
			}
			if(sum==0){
				System.out.println(num+"="+Arrays.toString(p));
			}
			
		}
		
	}

}


你可能感兴趣的:(java基础算法学习)