0

数値を取り、シグマ関数を使用してその数値が奇数で豊富な数値であるかどうかを判断するメソッドを作成しようとしています。豊富な数とは、シグマ関数に入れられたときに、与えられた数よりも大きな合計を生成する任意の数です。

たとえば、sigma(12) = 1+2+3+4+6+12 = 28 であるため、sigma(12) は豊富です。ただし、奇数ではないため、私の方法では考慮しません。範囲を入力しようとすると、意味不明な数字が大量に吐き出されるため、ループ関数が機能しない理由がわかりません。これが私がこれまでに持っているものです:

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();


    }

}

私はループを通過しますが、何が問題なのかわかりません。シグマ メソッドをテストしました。これが役立つ場合は提供できますが、整数を指定すると正しい値が出力されます。考え?

これが私のシグマ関数です:

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 に答える