8669. Все делители
Найдите все
делители натурального числа n.
Вход. Одно натуральное число n (n ≤ 109).
Выход. Выведите в
возрастающем порядке все делители числа n.
Пример
входа 1 |
Пример
выхода 1 |
10 |
1 2 5 10 |
|
|
Пример
входа 2 |
Пример
выхода 2 |
36 |
1 2 3 4 6 9
12 18 36 |
делители
числа
Если i – делитель числа n, то n / i также является делителем числа n. При этом если n – полный квадрат, то делители и n / совпадают.
Читаем входное
значение n.
scanf("%d",&n);
Перебираем делители от 1 до не включительно.
for(i = 1; i < sqrt(n); i++)
if (n % i == 0)
{
Если i – делитель
числа n, то n / i также будет
делителем числа n.
v.push_back(i);
v.push_back(n / i);
}
Проверяем, является ли n
полным квадратом. В этом случае добавляем в вектор делитель .
i = sqrt(n);
if (i * i == n) v.push_back(i);
Сортируем делители в возрастающем порядке.
sort(v.begin(),v.end());
Выводим в одной строке все делители.
for(i = 0; i < v.size(); i++)
printf("%d ",v[i]);
printf("\n");
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
int n = con.nextInt();
ArrayList<Integer> v = new ArrayList<Integer>();
for(int i = 1; i < Math.sqrt(n); i++)
if (n % i == 0)
{
v.add(i);
v.add(n / i);
}
int i = (int)Math.sqrt(n);
if (n % i == 0) v.add(i);
Collections.sort(v);
for(i = 0; i < v.size();
i++)
System.out.print(v.get(i) + " ");
System.out.println();
con.close();
}
}
import math
Читаем входное
значение n.
n = int(input())
В список lst будем добавлять делители
числа n.
lst = []
Перебираем делители от 1 до не включительно.
for i in range(1,int(math.sqrt(n))):
Если i – делитель
числа n, то n / i также будет
делителем числа n.
if n % i == 0:
lst.append(i)
lst.append(n//i)
Проверяем, является ли n
полным квадратом. В этом случае добавляем в вектор делитель .
i = int(math.sqrt(n));
if n % i == 0:
lst.append(i);
Сортируем делители в возрастающем порядке.
lst.sort()
Выводим в одной строке все делители.
print(*lst)