Положительные делители натурального числа
Выведите на экран все положительные делители
натурального числа и подсчитать количество делителей,
введённого пользователем с клавиатуры.
Код вроде работает компилировал запускался.
1)Правильно ли составлен код на положительные делители?
2)Когда компилируется код выводит следующее:
Вводите ваше натуральное число - 6 //ввел число
Число 3 делится на - 1 3 6 Количество делителей - 3
Как можно сделать, чтобы выводило так:
Вводите ваше натуральное число - 6 //ввел число
Число 3 делится на - 1 3 6
Количество делителей - 3
Как можно сделать, чтобы делители выводились в обратном порядке:
Вводите ваше натуральное число - 6 //ввел число
Число 3 делится на - 6 3 1
Количество делителей - 3
3) Как можно описать код, на ошибку, если пользователь ввел отрицательное число?
4) Как можно описать код, что на ноль делить нельзя, если пользователь ввел 0?
public static void main(String args[]){
int n;
int count = 0;
System.out.print("Вводите ваше натуральное число - ");
Scanner sr = new Scanner(System.in);
n = sr.nextInt();
System.out.print("Число " + n + " делится на - " );
for(int i = 1; i <= n; i++){
if ((n % i) == 0){
count++;
System.out.print(i + " ");
}
}
System.out.println("Количество делителей - " + count);
}
}
Вроде все правильно.
Вводите ваше натуральное число - 6 //ввел число
Число 3 делится на - 1 3 6
Количество делителей - 3
System.out.print("text"); просто выводит текст.
System.out.println("text"); выводит текст и затем делает переход на новую строку.
System.out.println(); просто делает на новую строку.
В твоем случае нужно добавить System.out.println(); сразу после цикла for (после закрывающей }), т.е. будет:
[CODE="java"]}
System.out.println();
System.out.println("Количество делителей - " + count);[/CODE]
Вводите ваше натуральное число - 6 //ввел число
Число 3 делится на - 6 3 1
Количество делителей - 3
Цикл for у тебя выполняется от 1 до n (i изначально равно 1 и увеличивается, вплоть до n). Чтобы делители выводились в обратном порядке, цикл должен выполняться от n до 1 (i изначально равно n и уменьшается, вплоть до 1). Т.е. for(int i = 1; i <= n; i++) нужно заменить на for(int i = n; i >= 1; i--).
Проверяй введенное пользователем значение (переменная n) с помощью условного оператора if. Т.е. после n = sr.nextInt(); добавляешь:
[CODE="java"]if (n < 0) {
System.out.println("Введено отрицательное число.");
} else {
// весь остальной код
System.out.print("Число " + n + " делится на - " );
// ...
System.out.println("Количество делителей - " + count);
}[/CODE]
В операторе if делаешь еще и проверку на 0:
[CODE="java"]if (n < 0) {
System.out.println("Введено отрицательное число.");
} else if (n == 0) {
System.out.println("Введен нуль.");
} else {
// весь остальной код
System.out.print("Число " + n + " делится на - " );
// ...
System.out.println("Количество делителей - " + count);
}[/CODE]
Хотя проще сделать так:
[CODE="java"]if (n <= 0) {
System.out.println("Нужно ввести положительное число.");
} else {
// весь остальной код
System.out.print("Число " + n + " делится на - " );
// ...
System.out.println("Количество делителей - " + count);
}[/CODE]