Простая функция isPrime из учебника не работает [закрыто]

K.Pietrzak спросил: 13 июня 2018 в 07:45 в: java

System.out.pritnln не выводит ничего из следующего кода:

Я новичок в так что я действительно не понимаю, в чем проблема. Это работало для парня из учебника, за которым я следую. Я использую среду IDE NetBeans 8.2

 public static void main(String[] args) {
     int count = 0;
     for (int i = 10; i < 50; i++) {
         if (isPrime(i)) {
             count++;
             System.out.println("Number " + i + " is a prime number");
             if (count == 3) {
                 System.out.println("Exiting the loop");
                 break;
             }
         }
     }
 } public static boolean isPrime(int n) {  
     if (n == 1) {
         return false;
     }
     for (int i = 2; i <= n / 2; i++) {
         if (n % 1 == 0) {
             return false;
         }
     }
     return true;
 }

2 ответа

Есть решение
oh.dae.su ответил: 13 июня 2018 в 07:50

У вас есть опечатка в вашей функции isPrime. Как он теперь создается, он всегда будет возвращать false.

Вы должны заменить

if (n % 1 == 0)

с

if (n % i == 0)

Теперь он должен работать.

AbdoCosmos ответил: 13 июня 2018 в 09:44

У вас есть проблема с этой функцией public static boolean isPrime(int n) в том, что внутри условия: if(n==1) это всегда правда !!

, потому что вы должны изменить на if(n==i):

public class Try0 {    /**
     * @param args the command line arguments
     */
   public static void main(String[] args) {
    int count = 0;
            for (int i = 10; i < 50; i++) {
                if (isPrime(i)) {
                    count++;
                    System.out.println("Number " + i + " is a prime number");
                    if (count == 3) {
                        System.out.println("Exiting the loop");
                        break;
                    }
                }
            }
        }
     public static boolean isPrime(int n) {              if (n == 1) {
                return false;
            }
            for (int i = 2; i <= n / 2; i++) {
                if (n % i == 0) {
                    return false;
                }
            }
            return true;
        }}

Выход:

Number 11 is a prime number
Number 13 is a prime number
Number 17 is a prime number
Exiting the loop