Суммируйте произведения чисел в диапазоне эти цифры являются простыми числами - PullRequest
0 голосов
/ 09 марта 2020

У меня есть небольшая проблема - мне нужно подготовить программу, которая (пошаговая информация):
1) Получает от пользователя два целых числа a и b и останавливается, когда b> a
2) Суммируйте произведения по всем числам в диапазоне <<code>a, b>, что цифры являются простыми числами
Пример:
Ввод: 10, 15,
Выход: 2340 (потому что 12 * 13 * 15 = 2340 2, 3 и 5 - простые числа )

Я чувствую, что застрял - у меня есть только сумма чисел (не произведение), а не премьер но все они.

public class Ex4 {
    static int getNmbs() {
        System.out.println("Enter number:");
        Scanner sc = new Scanner(System.in);
        return sc.nextInt();
    }
    public static int getSum(int a, int b) {
        if (a > b)
            return 0;
        else
            return a + getSum(a + 1, b);
    }

    public static void main(String[] args) {
        int a = getNmbs();
        int b = getNmbs();
        int c =getSum(a,b);
        System.out.println(c);
    }
}

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

Это нерекурсивный подход.

 static boolean isProductPrime(int num){
    int tmp         = num % 10;   
    if( tmp < 2)    return false;

    for(int i = 2; i*i <= tmp; i++) //Instead of Math.SQRT
        if(tmp % i == 0)   return false; 

    return true;
}

public static void main(String [] args) {
    Scanner myScanner = new Scanner(System.in);
    int a = myScanner.nextInt();
    int b = myScanner.nextInt();

    int ans = 1;
    for(int i = a ; i <= b ; i++){
        if(isProductPrime(i))
            ans *=i;
    }
    if( b < a) 
        ans = 0;
    System.out.println(ans);
}
0 голосов
/ 09 марта 2020

Чтобы решить эту проблему, вам нужно подумать о пошаговом процессе: сначала примите два целочисленных ввода, a и b .

Объявите переменную для хранения вашего продукта (ответ) и инициализируйте его в 1. (Если вы инициализируете его в 0, то вы всегда получите 0)

Теперь, предполагая a проверьте, являются ли цифры a простыми. Если это так, умножьте ваш продукт на него и увеличьте a . Если это не так, просто увеличьте a .

Промойте и повторяйте до a> b . И верните конечный продукт.

Хитрость в том, чтобы найти способ проверить, являются ли цифры числа простыми. Я предлагаю использовать деление по модулю с приращением степеней 10 (для более склонных к математике) или преобразовать целое число в строку и проверять каждый символ (используя toCharArray).

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...