Как найти все делители числа java
Здравствуйте! Подскажите по коду?
Выведите на экран все положительные делители
натурального числа и подсчитать количество делителей,
введённого пользователем с клавиатуры.
Код вроде работает компилировал запускался.
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 > System.out.println("Количество делителей - " + count); > >
Анализ алгоритма
Если i – делитель числа n, то n / i также будет делителем числа n. При этом если n – полный квадрат, то делители и n / совпадают.
Реализация алгоритма
Читаем входное значение n.
Перебираем делители от 1 до не включительно.
Если i – делитель числа n, то n / i также будет делителем числа n.
Проверяем, является ли n полным квадратом. В этом случае добавляем в вектор делитель .
if (n % i == 0) v.push_back(i);
Сортируем делители в возрастающем порядке.
Выводим в одной строке все делители.
Java реализация
import java.util.*;
public class Main
public static void main(String[] args )
Scanner con = new Scanner(System. in );
int n = con .nextInt();
ArrayList v = new ArrayList();
if ( n % i == 0)
int i = ( int )Math.sqrt( n );
if ( n % i == 0) v .add( i );
Collections.sort( v );
System. out .print( v .get( i ) + » » );
System. out .println();
Python реализация
import math
for i in range ( 1 , int (math.sqrt(n))):
if n % i == 0 :
i = int (math.sqrt(n));
if n % i == 0 : list.append(i);
print (*list, sep = » « )
Задача. Вывести все делители числа
Делителем натурального числа 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 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)); >>
Просмотр 0 веток ответов
Положительные делители натурального числа [закрыт]
Закрыт. Данный вопрос необходимо конкретизировать. Ответы на него в данный момент не принимаются.
Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме.
Закрыт 7 лет назад .
Здравствуйте! Подскажите по коду? Выведите на экран все положительные делители натурального числа и подсчитать количество делителей, введённого пользователем с клавиатуры. Код вроде работает компилировал запускался. 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 > System.out.println("Количество делителей - " + count); > >
