2013-09-05 2 views
2

Я пишу программу, которая принимает в качестве значения целое число и выводит сообщение о том, является ли введенное целое простым или нет. Алгоритм Я использую выглядит следующим образом ... Требуется: п> 0, Требуется: IsPrime < - правда, для я = 2 к SQRT (п) сделать, если п% г = 0 затем isPrime < - false конец, если и конец для Затем напечатайте, является ли число Prime или нет. Вот мой код до сих пор, код не работает, и я не могу найти проблему.Определение простых чисел Java

 public static void main(String[] args) { 
    Scanner kb = new Scanner(System.in); 
    int n; 
    System.out.println("Input a positive integer"); 
    n = kb.nextInt(); 

     while (n>0){ 
      boolean isPrime = true; 
      for (int i =2; i <= n/2;i++){ 
       if(n % i == 0){ 
        isPrime = false; 
        break; 
       } 
      } 
      if (isPrime = true){ 
       System.out.println("The integer, " + n + ", is a prime"); 
       break; 
      } 
      else{ 
       System.out.println("The integer, " + n + ", is not a prime"); 
       break; 
      } 
     } 
    } 
} 

Я был бы признателен, если сможет помочь, спасибо!

+1

Это не работает? Каким образом он «не работает»? Пожалуйста! Дайте нам ключ! –

+3

Вы понимаете, что 'isPrime = true' - это назначение, а не сравнение? –

+2

Вы можете сделать это быстрее, опуская все четные числа, кроме 2. http://www.mkyong.com/java/how-to-determine-a-prime-number-in-java/ – spuder

ответ

8

Ваша проблема заключается в этой строке:

if (isPrime = true){ 

Вы сделали задание, а по сравнению с true, поэтому оператор всегда true.

Использование == для сравнения логических значений, или еще лучше, так как isPrime уже boolean:

if (isPrime){ 
+0

Большое спасибо, что решили мою проблему, я ценю помощь – CBH

1

В тексте вы говорите, алгоритм вы намерены реализовать чеками целые числа до квадратного корня из n но ваш код доходит до n/2 (см. цикл for).

Причина, по которой ваш текущий код не работает, потому что if (isPrime = true) является операцией присваивания и должен быть сопоставлен if (isPrime == true) обратите внимание на два знака равенства.

+0

У меня есть сувенир с урожаем моих уроков по алгебре, но я думаю, что так оно и работает –

Смежные вопросы