0

我正在尝试创建一种方法,该方法将采用一个数字并使用 sigma 函数确定该数字是否为奇数、丰富的数字。丰富的数字是当放入 sigma 函数时产生的总和大于给定数字的任何数字。

比如 sigma(12) 很丰富,因为 sigma(12) = 1+2+3+4+6+12 = 28。但是,它并不奇怪,所以我的方法不会考虑它。我不知道为什么我的循环函数不起作用,因为当我尝试输入一个范围时,它会吐出一堆数字乱码。这是我到目前为止所拥有的:

import java.util.*;


public class OddAbundant {
static Scanner input = new Scanner(System.in);

public static void findOddAbundant(){
    System.out.println("Please enter the start of the range you want to test for odd abundant integers");
    int startRange = input.nextInt();
    System.out.println("Please enter the end of the range you want to test for odd abundant integers");
    int endRange = input.nextInt();
    for(int b = startRange; b <= endRange; b++) {
        if (Sigma.Sigma(b)<(b*2))   
            continue;
        else{
            if (b % 2 == 1)
                System.out.println(b);
        }


    }

}
public static void main(String[] args) {
    findOddAbundant();


    }

}

我经历了循环,但我不知道出了什么问题。我已经测试了 sigma 方法,如果它对你们有帮助,我可以提供它,并且在给定整数时它确实会吐出正确的值。想法?

这是我的西格玛函数:

import java.util.*;

public class Sigma {

static Scanner input = new Scanner(System.in);

public static int Sigma(int s){
    int a = 0;
    for(int i=1;i<=s;i++){
        if(s%i==0)
            a = a + i;

    }
    System.out.print(a);
    return a;

}
public static void main(String[] args) {
    System.out.println("Please enter the number you want to perform the sigma function on");
    int s = input.nextInt();
    Sigma.Sigma(s);
    System.out.print(" is the sum of all the divisors of your input" ); 
    }

}
4

1 回答 1

0

这是个愚蠢的问题;从 Sigma 函数中删除 print 语句。

public static int Sigma(int s){
    int a = 0;
    for(int i=1;i<=s;i++){
        if(s%i==0)
            a = a + i;

    }
    System.out.print(a); //why do you have it here?
    return a;

}
于 2013-04-08T04:13:10.563 回答