2015-07-09 3 views
-6

Мне трудно понять, в чем цель цикла for в этом случае. Он начинается с 2 и повторяется до номера, который мы ввели. Затем он проверяет, является ли напоминание о/b равным 0, если да, чем «primeNumber == false». После этого существует предложение if и проверяет другое, если предложения. Это, как я понял эту программу, если я ошибусь почему программа показывает, что 2 является primenumber, если 2/2 = 1 и, следовательно, напоминание = 0. СпасибоПожалуйста, помогите мне разобраться в этой программе

package prime; 
import java.util.Scanner; 

public class primetime { 
    public static void main (String [] agrs){ 
    Scanner input = new Scanner (System.in); 
    System.out.print("Enter a number: "); 
    int a = input.nextInt(); 
    boolean primeNumber = true; 
    for (int b = 2; b < a; b++){ 
     int z = a%b; 
     if (z == 0){ 
      primeNumber = false; 
      break; 
     } 
    } 
    if (primeNumber == true){ 
     System.out.println("PrimZahl"); 
    } 
    else{ 
     System.out.println("keine PrimZahl"); 
    } 

    } 
} 

ответ

3

почему делает программа показывает, что 2 является primenumber, если 2/2 = 1 и, следовательно, напоминание = 0

Если a==2, цикл никогда не вводится, так как b < a никогда не верно (потому что b инициализируется 2 и 2 < 2 является ложным). Поэтому primeNumber остается true, как и должно быть, так как 2 является простым.

+0

Это имеет смысл, спасибо. Что насчет 51 ?? 51/2 = 25.5 напоминание не 0, все еще показывает мне, что 51 не является примером, который истинен, но как – osman

+0

Плохо, я думал о чем-то другом! –

+1

@osman '51/3 = 17', так что остаток равен 0. Следовательно, 51 не является простым. – Eran