java 求n以内完全数

Python017

java 求n以内完全数,第1张

n.txt放在src下哈

public

static

void

main(String[]

args)

throws

Exception

{

//

TODO

Auto-generated

method

stub

long

num

=

Long

.parseLong(new

BufferedReader(new

FileReader("n.txt"))

.readLine())

for

(int

i

=

2

i

<=

num

i++)

{

if

(perfectNum(i))

System.out.println(i

+

"是完全数")

}

}

/**

*

判断一个数是否是完全数的方法

*

*

@param

num

*

@return

*/

public

static

boolean

perfectNum(long

num)

{

int

sum

=

0

for

(int

i

=

1

i

<=

num

/

2

i++)

{

if

(num

%

i

==

0)

{

sum

+=

i

//

System.out.println(i)

}

}

return

sum

==

num

}

看不懂的话给我发信息。我已经写的很详细了,有些基本语法要不懂,可以查下百度。

public class test{

//取出1-no之间的所有完数

public static void getWS(int no){

for(int i=4i<=noi++){//因为1,2,3肯定不是完数,就姑且从4开始检查,一直检查到no

if(checkWS(i)){

System.out.println(i)//调用checkWS(int n)方法,检查该整数是否是完数。如果该数是完数,输出。

}

}

}

//判断整数n是否是完数

public static boolean checkWS(int n){

int sum=1//1肯定是一个能整除整数n的被除数,初始化n的所有因子之和sum

for(int i=2i<=n/2i++){

if(n%i==0){//%求余,如果余数等于0,则i为该整数的因子,那么把sum=sum+i.这里只检查从2到n/2之间的数,因为大于4的整数最大的因子不会超过他的一半, 这样能提高程序效率

sum+=i

}

}

return sum==n?true:false//如果最终因子和sum等于它本身则返回true,否则返回false

}

public static void main(String args[]){

getWS(100)//输出100内的完数,这里的数字填多少就找出1-多少之间的所有完数

}

}