Нахождение числа, которое делится на все числа от 1 до 10 равномерно

1

Я хочу найти число, которое делится на все числа от 1 до 10. Мой образец кода печатает все числа, которые делятся. Однако как бы я решил приблизиться к проблеме, чтобы получить только число, которое делится на ВСЕ числа от 1 до 10, а не только несколько:

public class prob_5 {
public static void main(String args[]) {

    int count = 0;

    for (int x = 1; x <= 3000; x++) {
        for (int i = 1; i <= 10; i++) {

            if (x % i == 0) {

                System.out.println(x);
            }

        }
    }

}

}

  • 2
    Рассчитать 10 факториал?
  • 0
    1260 тоже работает? Делится на все 1,2,3,4,5,6,7,8,9,10
Показать ещё 3 комментария
Теги:

3 ответа

2
Лучший ответ

Во-первых, обратите внимание, что вы не можете печатать внутри внутреннего цикла: это слишком рано. Затем выясните, когда вы можете распечатать: во внешнем цикле, сразу после внутреннего цикла.

Как вы знаете, что вы должны печатать ответ? Вам нужно проверить, что все MOD внутреннего контура не дали никакого остатка. Для этого добавьте флаг boolean, установите его значение true вне внутреннего цикла и установите значение false если вы увидите ненулевой остаток.

Если ваш флаг переживает внутренний цикл, не становясь false, вы получите свой ответ!

boolean isGood = true;
for (int i = 1; i <= 10; i++) {
    if (x % i != 0) {
        isGood = false;
        break;
    }
}
if (isGood) {
    System.out.println(x);
}

Примечание: конечно, нет смысла делать все эти проверки - все, что вам нужно, это найти первое число, приняв решение о наименьшем числе первичных факторов, которые вам нужно умножить, чтобы получить число, которое делится на все десять чисел, а затем распечатать все кратные номера.

3

Наименьшее общее кратное значений от 1 до 10 - это то, что вы ищете. Чтобы сделать это, все, что вам нужно сделать, это умножить каждое число на следующее, так что у вас будет 1 * 2 * 3 * 4... * 9 * 10. Это всегда даст вам значение, которое делится на все числа в диапазоне.

EDIT: Это именно то, что предложил Оли Чарльворт в своем комментарии - 10 факториалов (10!) - 10 * 9 * 8... * 3 * 2 * 1, что совпадает с тем, что я упоминал ранее.

  • 0
    Это не даст самое низкое значение. Если число делится на 2 и 5, оно также делится на 10.
  • 0
    ОП спрашивал номер, который делится на ВСЕ числа от 1 до 10. Я не понимаю, как ваш комментарий относится к вопросу? Кроме того, именно поэтому я ставлю в строке «почти во всех случаях», потому что это иногда не соответствует действительности. Однако в этом случае это будет
Показать ещё 6 комментариев
1
package com.test.inter;

/**
 * Class to find the lowest number divisible by 1,2,3...20 * @author Faiz Ahamad
 */
public class TestLowestDivisibleFaiz {

    public static void main(String[] args) {

        int n;
        boolean isDivisible = true;

        for (n = 20; n < 300000000; n++) {

            for (int i = 1; i <= 20; i++) {
                if (n % i != 0) {
                    isDivisible = false;
                    break;
                } else {
                    isDivisible = true;
                }
            }
            // If the number is divisible by all break out of the outer loop to
            // get the exact number
            if (isDivisible)
                break;
        }

        // Print if the number is divisible by all
        if (isDivisible) {
            System.out.println(n);
        }
    }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню