java解决关于“完数”的问题
问题描述:
一个正整数的因子是所有可以整除它的正整数。而一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。例如6=1+2+3(6的因子是1,2,3)。 现在,你要写一个程序,读入两个正整数n和m(1<=n<m<1000),输出[n,m]范围内所有的完数。
输入格式:
两个正整数,以空格分隔。
输出格式:
其间所有的完数,以空格分隔,最后一个数字后面没有空格。如果没有,则输出一个空行。
输入样例:
1 100000000
输出样例:
6 28 496 8128
代码展示:
import java
.util
.Scanner
;
public class text7_2 {
public static int
wanshu(int i
)
{
int sum
=1;
int ntr
= 0;
if(i
>1)
{
for(int j
=2;j
<i
;j
++)
{
if(i
%j
==0)
{
sum
+=j
;
}
}
if(sum
==i
)
{
ntr
=1;
}
}
return ntr
;
}
public static void main(String
[] args
) {
Scanner
in = new Scanner(System
.in);
int num1
=in.nextInt();
int num2
=in.nextInt();
int count
=0;
for(int i
=num1
;i
<=num2
;i
++)
{
if(wanshu(i
)==1)
{
if(count
!=0)
{
System
.out
.print(" ");
}
count
++;
System
.out
.print(i
);
}
}
}
}