Условные операторы для определения простых чисел - Java
Формулировка задачи:
Добрый день. У меня программка для определения простых чисел в диапазоне от 2 до 7. Не могу понять, почему при вводе четных чисел (4 или 6) выдается сообщение, что число простое, хотя из-за отсутствия остатка от деления счетчик (result) увеличил значение на 1 и должно было выдаться сообщение, что число сложное.
import java.util.Scanner; public class Lessen_2_Loop { public static void main(String[] args) { int a; int m[]; int result=0; Scanner scn; System.out.println("Введите число"); scn=new Scanner(System.in); a=scn.nextInt(); m=new int[a]; System.out.print("Проверяемые на деление без остатка числа: "); for (int i=2; i<a; i++){ m[i]=i; System.out.print(m[i]+" ");} System.out.println(); if(a<=7 && a>1){ for (int i=2; i<a; i++){ if (a%m[i]==0){ result=result++;} } if (result!=0) {System.out.println("Число сложное");} else System.out.println("Число простое");} }}
Введите число 4 Проверяемые на деление без остатка числа: 2 3 Число простое
Решение задачи: «Условные операторы для определения простых чисел»
textual
Листинг программы
import java.util.Scanner; public class Lessen_2_Loop { public static void main(String[] args) { int a; double b; int m[]; int result=0; String x; Scanner scn; System.out.println("Введите число"); scn=new Scanner(System.in); a=scn.nextInt(); m=new int[a]; System.out.print("Проверяемые на деление без остатка числа: "); b=Math.sqrt(a); for (int i=2; i<b; i++){ m[i]=i; System.out.print(m[i]+" ");} System.out.println(); for (int i=2; i<b; i++){ if (a%m[i]==0){ result=result+1;} } x=(result!=0)? " - число сложное": " - число простое"; System.out.print(a +" "+ x); }}
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д