读书人

完全数数论有关问题系列

发布时间: 2013-03-26 09:54:34 作者: rapoo

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

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


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

6=1+2+328=1+2+4+7+14496=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 stubint 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("判断结束!");}}

读书人网 >编程

热点推荐