Найти все делители числа можно следующим образом :
int number = 50;
Set<Integer> divisors = new TreeSet<>();
divisors.add(1);
divisors.add(-1);
for(int i = 2; i <= number / 2; i++) {
if(number % i == 0) {
divisors.add(i);
divisors.add(-i);
}
}
divisors.add(number);
divisors.add(-number);
System.out.println(divisors);
// => [-50, -25, -10, -5, -2, -1, 1, 2, 5, 10, 25, 50]
Following is the Java program which prints all the divisors of a given number.
Program
import java.util.Scanner; public class DivisorsOfNaturalNumber { public static void main(String args[]) { Scanner sc = new Scanner(System.in); System.out.println("Enter required number :"); int num = sc.nextInt(); for(int i = 1; i<num; i++) { if(num % i == 0) { System.out.println(" "+i); } } } }
Output
Enter required number : 200 1 2 4 5 8 10 20 25 40 50 100
Здравствуйте! Подскажите по коду?
Выведите на экран все положительные делители
натурального числа и подсчитать количество делителей,
введённого пользователем с клавиатуры.
Код вроде работает компилировал запускался.
1)Правильно ли составлен код на положительные делители?
2)Когда компилируется код выводит следующее:
Вводите ваше натуральное число — 6 //ввел число
Число 3 делится на — 1 3 6 Количество делителей — 3
Как можно сделать, чтобы выводило так:
Вводите ваше натуральное число — 6 //ввел число
Число 3 делится на — 1 3 6
Количество делителей — 3
Как можно сделать, чтобы делители выводились в обратном порядке:
Вводите ваше натуральное число — 6 //ввел число
Число 3 делится на — 6 3 1
Количество делителей — 3
3) Как можно описать код, на ошибку, если пользователь ввел отрицательное число?
4) Как можно описать код, что на ноль делить нельзя, если пользователь ввел 0?
public class Test {
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);
}
}
Делителем натурального числа n называют число, на которое n делится без остатка.
Например:
делителем числа 9 является число
3
,9 : 3 = 3;
делителем числа 9 не является число4
,9 : 4 = 2 + 1/4;
Главный класс:
package Task_18; import java.util.Scanner; // 16) Вывести все делители числа public class Task_18 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Введите число: "); int n = sc.nextInt(); sc.close(); System.out.println(Class_Task_18.metod(n)); } }
Класс в котором реализован метод:
package Task_18; public class Class_Task_18 { public static String metod(int n) { String res = ""; for (int i = 1; i <= n; i++) { if(0 == (n % i)) res += i+ ","; } return res; } }
JUnit Tests:
package Task_18; import static org.junit.Assert.*; import org.junit.Test; public class Tests { @Test public void test_1() { assertEquals("1,", Class_Task_18.metod(1)); } @Test public void test_99() { assertEquals("1,3,9,11,33,99,", Class_Task_18.metod(99)); } @Test public void test_100() { assertEquals("1,2,4,5,10,20,25,50,100,", Class_Task_18.metod(100)); } @Test public void test_1000() { assertEquals("1,2,4,5,8,10,20,25,40,50,100,125,200,250,500,1000,", Class_Task_18.metod(1000)); } }
Выведите на экран все положительные делители натурального числа, введённого пользователем с клавиатуры.
import java.util.*;
public class Zadachi{
public static void main(String[] args){
//Создадим переменную, в которую занесем значение числа, заданного пользователем
int a;
Scanner scn=new Scanner(System.in);
System.out.println(«Введите натуральное число»);
//Проверка, является ли введенный знак натуральным числом
if(scn.hasNextInt()){
//Если проверка пройдена, перемменой а присваивается значение введенного числа
a=scn.nextInt();
//Из условия задачи нам необходимо найти все делители числа, заданного пользователем. Зная, что наибольший делитель — это само число, а наименьший — 1, составим цикл: если при деление по модулю заданного числа на число из потенциальных делителей результат равен 0, такое число является делителем заданного числа, которое и выводим на экран
System.out.print(«Делителями числа «+a+» являются «);
for(int i=a;i>0;i—){
int b=a%i;
if(b==0)
System.out.print(i+» «);
}
}
else System.out.println(«Ошибка. Введено не число»);
}
}