Назад Зміст Вперед

Задачі на знаходження дільників

натуральних чисел

Число i є дільником натурального числа n, якщо n mod i=0.

У кожного натурального числа n обов’язково є два дільники: 1 та n.

Всі інші дільники натурального числа n (якщо вини є), знаходяться в інтервалі [2, n div 2].

Натуральне число називається простим, якщо у нього немає дільників в інтервалі [2, n div 2].

Щоб знайти всі дільники числа n, потрібно перевірити всі числа i з інтервалу [1, n] на умову n mod i=0. Тобто це буде такий цикл:

for i:=1 to n do if n mod i=0 then...

Щоб перевірити, чи є число n простим, достатньо перевірити на цю умову всі числа з інтервалу [2, n div 2]. Тобто це буде такий цикл:

for i:=2 to n div 2 do if n mod i=0 then...

Приклад 1

Дано натуральне число n. Знайти всі його дільники, їх кількість та суму.

Дано: натуральне число n.

Знайти: Надрукувати його дільники, підрахувати їх кількість та знайти їх суму.

Результати роботи програми

ВвідВідповідь Пояснення
12 1 2 3 4 6 12 6 28Вводимо число 12.
Його дільники: 1 2 3 4 6 12.
Кількість дільників –6.
Сума дільників – 28.

Змінні:

Вхідні:

Вихідні:

Алгоритм

  1. Спочатку вводимо натуральне число n.
  2. Ми будемо знаходити кількість та суму. Тому присвоїмо початкове значення 0 змінним k та s.
  3. Нам потрібно знайти всі дільники числа n. Вони знаходяться в інтервалі [1, n].
  4. У циклі for i:=1 to n do будемо знаходити ці дільники. Для кожного i будемо перевіряти умову n mod i=0 і, якщо вона вірна (тобто i є дільником n), то
  5. Коли цикл закінчиться, виводимо знайдені значення кількості та суми на екран оператором writeln(k,' ',s).

Програма

 var n,k,s,i:word;
begin
 read(n);
 k:=0;s:=0;
 for i:=1 to n do
    if n mod i=0 then
      begin
         write(i,' '); k:=k+1; s:=s+i;
      end;
 writeln(k,' ',s);
end.

Приклад 2

Для кожного натурального числа з інтервалу [A, B] знайдіть всі дільники, їх кількість та суму.

Дано: два натуральних числа A та B.

Знайти: Для кожного з чисел A, A+1, A+2,..., B знайти всі дільники, підрахувати їх кількість та знайти їх суму.

Результати роботи програми

ВвідВідповідь Пояснення
a=10
b=14
дільники числа 10: 1 2 5 10 k=4 s=18
дільники числа 11: 1 11 k=2 s=12
дільники числа 12: 1 2 3 4 6 12 k=6 s=28
дільники числа 13: 1 13 k=2 s=14
дільники числа 14: 1 2 7 14 k=4 s=24
Вводимо числа 10 та 14.
Для кожного з чисел 10, 11, 12, 13, 14, знаходимо дільники, їх кількість та суму.
Перед дільниками виводимо на екран і само число

Змінні:

Вхідні:

Вихідні:

Алгоритм

  1. Спочатку вводимо натуральні числа A та B, що є границями інтервалу.
  2. Для кожного числа n із цього інтервалу ми повинні повністю виконати попередній алгоритм, починаючи з пункту 2. Тому у нас будуть вкладені цикли:

Блок–схема програми

Програма

 var a,b,n,i,k,s:word;
begin
 write(a=');read(a);
 write('b=');read(b);
 for n:=a to b do
 begin
   write(дільники числа ',n,': ');
   s:=0;k:=0;
   for i:=1 to n do
      if n mod i=0 then
        begin
          write(i,' ');
          k:=k+1; s:=s+i;
        end;
   writeln(' k=',k,' s=',s);
 end;
end.

Приклад 3

Для кожного з чисел з інтервалу від 300 до 400 знайти суму дільників. Вивести на екран числа, у яких сума дільників кратна 10, а також саму суму дільників.

Знайти: Для кожного з чисел 300, 301, 302, ..., 400 додати всі дільники, і, якщо сума буде кратна 10, то вивести на екран число та знайдену суму.

Результати роботи програми

Відповідь Пояснення
n=304 s=620 n=312 s=840 n=316 s=560 n=319 s=360
n=323 s=360 n=327 s=440 n=328 s=630 n=342 s=780
n=343 s=400 n=344 s=660 n=348 s=840 n=349 s=350
n=351 s=560 n=354 s=720 n=356 s=630 n=358 s=540
n=359 s=360 n=360 s=1170 n=376 s=720 n=377 s=420
n=378 s=960 n=379 s=380 n=380 s=840 n=384 s=1020
n=389 s=390 n=395 s=480 n=398 s=600 n=399 s=640
В програму нічого не вводиться. Числа у відповіді мають коментарі: спочатку виводиться число n, а потім сума його дільників s.

Змінні:

Вхідних даних немає

 

Вихідні:

Алгоритм

  1. Так же як і у попередньому прикладі, у нас будуть вкладені цикли:

Програма

 var n,i,s:word;
begin
 for n:=300 to 400 do
 begin
   s:=0;
   for i:=1 to n do
     if n mod i=0 then s:=s+i;
   if s mod 10=0 then
   write(' n=',n,' s=',s);
 end;
end.

Приклад 4

Дано натуральне число n. Визначити, чи є воно простим?

Дано: натуральне число n.

Знайти: З’ясувати, чи є у числа дільники у інтервалі [2, n div 2].

Результати роботи програми

ВвідВідповідь Пояснення
12No У числа 12 в інтервалі [2,6] є дільники: 2, 3, 4, 6. Тому число не є простим.
17Yes У числа 17 в інтервалі [2,8] немає дільників. Тому число є простим.

Змінні:

Вхідні:

Вихідні:

Проміжні:

Алгоритм

  1. Спочатку вводимо натуральне число n.
  2. Ми будемо використовувати алгоритм з ознакою. Тому присвоїмо початкове значення ознаці p:=false. Тобто вважаємо, що дільників немає.
  3. Тепер у циклі for i:=2 to n div 2 do будемо шукати дільники. Для кожного i будемо перевіряти умову n mod i=0 і, якщо вона вірна (тобто i є дільником n), то установимо значення ознаки p:=true.
  4. Коли цикл закінчиться, то перевіримо значення ознаки:

Програма

 var n,i: word; P:boolean;
begin
 read(n);p:=false;
 for i:=2 to n div 2 do
   if n mod i=0 then p:=true;
 if not p then writeln('yes')
          else writeln('no');
end.

Приклад 5

Знайдіть в інтервалі [A, B] всі прості числа.

Дано: два натуральних числа A та B.

Знайти: Для кожного з чисел A, A+1, A+2,..., B з’ясувати, чи є воно простим. Якщо число просте, то вивести його на екран.

Результати роботи програми

Ввід Відповідь Пояснення
10 14 11 13 Вводимо числа 10 та 14.
Для кожного з чисел 10, 11, 12, 13, 14, шукаємо дільники в інтервалі [2,n div 2].
У числа 10 в інтервалі [2,5] є дільники 2 та 5, тобто число не просте.
У числа 11 в інтервалі [2,5] немає дільників, тобто число просте і тому виводиться на екран.
У числа 12 в інтервалі [2,6] є дільники 2, 3, 4 та 6, тобто число не просте.
У числа 13 в інтервалі [2,6] немає дільників, тобто число просте і тому виводиться на екран.
У числа 14 в інтервалі [2,7] є дільники 2 та 7, тобто число не просте.

Змінні:

Вхідні:

Вихідні:

Проміжні:

Алгоритм

  1. Спочатку вводимо натуральні числа A та B, що є границями інтервалу.
  2. Для кожного числа n із цього інтервалу ми повинні повністю виконати попередній алгоритм, починаючи з пункту 2. Тому у нас будуть вкладені цикли:

Програма

 var n,i,a,b: word; P:boolean;
begin
 read(a,b);
 for n:=a to b do
 begin
   p:=false;
   for i:=2 to n div 2 do
     if n mod i=0 then p:=true;
   if not p then write(n,' ');
 end;
end.

Варіанти задач

  1. Дано натуральне число n. Вивести на екран всі його парні дільники.
  2. Дано натуральне число n. Знайти суму його непарних дільників.
  3. Дано натуральне число n. Знайти кількість його парних дільників.
  4. Для кожного цілого числа з інтервалу [10,15] знайдіть всі непарні дільники.
  5. Дано натуральне число n. Надрукуйте його дільники та знайдіть середнє арифметичне його парних дільників.
  6. Знайдіть всі прості трьохзначні числа.
  7. Надрукуйте всі трьохзначні паліндроми, що є простими числами.
  8. В інтервалі [A, B] знайдіть кількість простих чисел.
  9. Для кожного цілого числа з інтервалу [30, 36] знайдіть кількість його парних дільників.
  10. Для кожного цілого числа з інтервалу [15, 20] знайдіть суму його непарних дільників.
  11. Знайдіть суму непарних дільників для кожного з цілих чисел від 50 до 70.
  12. Для кожного цілого числа з інтервалу [16, 24] знайдіть середнє арифметичне його парних дільників.
  13. Для кожного цілого числа з інтервалу [120; 140] знайдіть всі непарні дільники та їх кількість.
  14. Для кожного цілого числа з інтервалу [A, B] знайдіть кількість його парних дільників.
  15. Для кожного цілого числа з інтервалу [A, B] знайдіть всі його дільники, що кратні 3.
  16. З інтервалу [15, 25] виведіть на екран числа, у яких 4 дільники.

Назад Зміст Вперед