2015-05-12 4 views
-2

Как я могу написать программу, которая, когда вы вводите число, например, например, 5, даст мне вывод первых 5-го числа чисел, умноженных вместе?Как я могу умножить определенное количество простых чисел?

Например, 5 должен возвращать 2 * 3 * 5 * 7 * 11 = 2310. Это часть большого проекта, и эта часть меня сильно озарила.

+0

Так что, если я вхожу 23 будет умножать 17 * 19 * 23 * 29 * 31? Таким образом, после этого получается два предыдущих простых числа и два других простых числа? Если это так, что произойдет, если вы введете 2? – Forseth11

+1

Что именно вы запятнали? Можете ли вы отправить любой код, который у вас есть, плюс любые сообщения об ошибках, трассировки стека исключений или неправильный вывод, который у вас есть? – rgettman

+0

Удачи вам в выполнении домашней работы или интервью! – Barett

ответ

1

Не получив полного ответа, просто направляйте вас в правильном направлении.

  1. Найти первые i простых чисел. Это может быть сделано грубой силой или с использованием более умного алгоритма, такого как Sieve_of_Eratosthenes.
    (Наивный алгоритм будет просто проверять каждый номер итеративно, чтобы увидеть, является ли это простым, если он делится на все нижние числа, прервать, когда вы нашли правильное количество простых чисел).
  2. Умножить числа. Это может быть очень большое число, поэтому я предлагаю использовать для него объект BigInteger.

Реализация каждой из этих частей должна быть довольно простой и оставлена ​​для вас.

-1

эта функция может помочь вам

private ArrayList<Integer> primes = new ArrayList<Integer>() ; 
public void primeMultiply(int j){ 
    boolean isPrime = false; 
    if(j<4){ 
      primes.add(1); 
      primes.add(2); 
      primes.add(3); 
      double mutliply = 1 ; 
      for(Integer int1 : primes){ 
       multiply *= int1 ; 
      } 
      System.out.println("Multiply=" + multiply) ; 
      return ; 
    }else{ 
      primes.add(1); 
      primes.add(2); 
      primes.add(3); 
      for(int k=4 ; k<=j ; k++){ 
       if(k%2 == 0) continue; 
       isPrime = true ; 
       else{ 
        for(int q=2 ; q<k-1 ; q++){ 
         if(k%q==0){ 
          isPrime = flase; break; 
         } 
        } 
       } 
      if(isPrime){primes.add(k) ;} 
      isPrime= false ; 
      } 
      for(Integer int1 : primes){ 
       multiply *= int1 ; 
      } 
      System.out.println("Multiply=" + multiply) ; 
      return ; 

    } 
}