运行结果是空白
public class work6 {
static boolean isWan(int i) {//i为完全数
int count = 1;//完全数的定义
for(i = 2;i<1000;i++){
for(int j=2;j<=i/2;j++)//小于等于i/2,每个整数的最大因子不超过它的一半
{
if(i%j==0){//如果被整除,说明j是i的因子
count =count + j;//因子累加
}
}
}
if(i==count) {//判断当前数和其所有因子和是否相等
return true;//如果相等,就是
}
return false;
}
public static void main(String[] args) {
for(int a=1;a<100;a++) {
if(isWan(a)) {
System.out.println(a);
}
else break;
}
}
}
iswan方法中i是传入的参数,那后面的for循环就不应该把i放入其中,i++这样累加就破坏了原来的值。
if(i==count) 的时候 i已经变了,结果自然不对。
写了一个,你参考下
public class Test {
public static boolean isWan(int n) {
int sum = 0;
for (int i = 1; i <= n / 2; i++) {
//是因子,累加
if (n % i == 0) {
sum = sum + i;
}
}
//满足完全数的定义返回true,否则返回false
if (sum == n) {
return true;
} else {
return false;
}
}
public static void main(String[] args) {
for (int i = 1; i <= 100; i++) {
if (isWan(i)) {
System.out.println(i);
}
}
}
}
static boolean isWan(int num) {
int count = 1;
for(int j=2;j<=num/2;j++)
{
if(num%j==0){
count += + j;
}
}
if(num==count) {
return true;
}
return false;
}
public static void main(String[] args) {
for(int a=1;a<100;a++) {
if(isWan(a)) {
System.out.println(a);
}
}
}
1不是,就break了