Условные операторы для определения простых чисел - 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);
}}