2016-02-24 6 views
1
public class JavaP3 { 
    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     for (int n = 1; n < 1001; ++n) { 
      boolean red = isPrime(n); 
      if (red = true) { 
       System.out.println("Prime #" + "\t" + n); 
      } 
     } 
    } 

    public static boolean isPrime(int num) { 
     if (num == 1 || num == 2) { 
      return true; 
     } 

     if (num % 2 == 0) { 
      return false; 
     } 

     for (int i = 3; i <= Math.sqrt(num); i += 2) { 
      if (num % i == 0) { 
       return false; 
      } 
     } 
     return true; 
    } 
} 

Кажется, что он должен работать, поскольку это очень простой цикл. Предполагается распечатать все простые числа между 1-1000, используя метод isPrime. Есть ли что-то очевидное, которого я пропускаю, что-то не так с циклом for или что-то не так с размещением основного метода?Java Prime Number для отказа петли

+0

Ваша за петли скучаю g '{}'. –

+0

Это 'if (red = true) {' присваивание (а не тест равенства). Попробуйте 'if (red == true) {' ** или ** 'if (red) {' –

+0

'1' не является простым. '=' не '==' (и вам не нужно '==' в любом случае). – dasblinkenlight

ответ

1

Вы назначаете true на номер red оператором присваивания =. Оператор == сравнивает вместо этого равенство. Но поскольку это уже boolean, сравнение не требуется. Использование:

if (red) { 
0

Заменить = с == в, если условие
if(red == true)
или
if(red)

0

Вам нужно сделать 2 изменения.

1) изменение, если (красный = истина) в случае (красный)

Причина - если (красный = истина) будет всегда верно и не имеет никакого значения

2) изменение для (INT I = 3; я < = Math.sqrt (NUM); я + = 2)

 if (num % i == 0) 

      return false; 

    return true; 

к

for (int i=3; i <= Math.sqrt(num); i += 2) 
    { 

     if (num % i == 0) 

      return false; 
    } 
    return true; 
+0

Спасибо за предложенные изменения, но он все еще не работает. Есть ли у вас какие-либо другие идеи? – darrac

+0

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

+0

Да, но я не уверен, что случилось с этой конкретной логикой. – darrac