完全数——数论问题系列

完全数(perfect number)是一些特殊的自然整数。完全数等于其所有因子的和,这里所谓的因子就是所有可以整除这个数的数,而不包括该数本身。其实谈到完全数,与之相关的两个概念是亏数和赢数。一般来说,通过气所有真一字的和判断一个自然数是亏数、赢数以及完全数。


当一个自然数的所有真因子之和小于该自然数时,那么该自然数便是亏数;
当一个自然数的所有真因子之和大于该自然数时,那么该自然数便是赢数;
当一个自然数的所有真因子之和等于该自然数时,那么该自然数便是完全数;


我们来举几个典型的完全数的例子:


6=1+2+3
28=1+2+4+7+14
496=1+2+4+8+16+31+62+124+248


代码如下:


import java.util.Scanner;
public class PerfectNumber {

/**
* @param args
*/
static void isPerfectNumber(int para)
{
int sum=0;
String str="1";
for(int i=1;i<para;i++)
{
if((para%i)==0)
{
sum+=i;
if(i>=2)
{
str=str+"+"+i;
}
}
}
if(para==sum)
{
System.out.println(para+"是一个完全数!");
System.out.println("其因子为:"+para+"="+str);
}else
{
System.out.println(para+"不是一个完全数!");
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int flag;
int para;
do{
System.out.print("请输入需要判断的数:");
Scanner input = new Scanner(System.in);
para=input.nextInt();
isPerfectNumber(para);
System.out.print("输入1继续进行判断,输入0结束!");
flag=input.nextInt();
}while(flag==1);
System.out.print("判断结束!");

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值