黑马程序员技术交流社区
标题:
JAVA完全数问题
[打印本页]
作者:
邵新瑜
时间:
2012-12-11 14:58
标题:
JAVA完全数问题
程序目的:查找10000以内的完全数。(完全数:如果一个整数等于除它自身以外的所有除数之和,则这个数就是一个完全数)。例如:6=1+2+3,6就是一个完全数。28=1+2+4+7+14。28就是一个完全数。
希望能给出思路。
作者:
崔政
时间:
2012-12-11 15:28
本帖最后由 崔政 于 2012-12-11 15:31 编辑
自娱自乐了一个,方法很笨,凑合看吧
import java.util.ArrayList;
import java.util.List;
public class ArrayListTest {
public static void main(String[] args) {
getNum(10000);
}
//获得num以内的完全数
public static void getNum(int num){
for(int i=1;i<num;i++){
boolean result= isWholly(i);
if(result)
System.out.println(i);
}
}
//查看是否是完全数
public static boolean isWholly(int num){
boolean result=false;
List<Integer> list=new ArrayList<Integer>();
for(int i=1;i<num;i++){
if(num%i==0){
list.add(i);
}
}
int sum=getSum(list);
if(num==sum)
result=true;
return result;
}
//获得数组的和
public static int getSum(List<Integer> list){
int sum=0;
for(int i:list)
sum=sum+i;
return sum;
}
}
复制代码
作者:
Kevin123
时间:
2012-12-14 11:02
这个可以实现楼主所要的功能:
public class test
{
public static void main(String[] args)
{
int num = 2;
int sum = 0;
//找出因数
while(num<=10000)
{
for(int i =1;i<num;i++)
{
if(num%i==0)
sum+=i;
}
if(num == sum)
System.out.print(num+" ");
num++;
sum=0;
}
}
}
复制代码
输出结果是:6 28 496 8128
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2