Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка СИ.doc
Скачиваний:
46
Добавлен:
27.03.2015
Размер:
757.25 Кб
Скачать

5. Делители целого числа

Пример 1. Найти все делители неотрицательного целого числа n.

Вариант 1.Самый простой способ решения – это проверить по очереди делимость числа nна каждое из чисел 1,2,3, ... ,n. Число операций можно сократить, доказав, что в интервале [n/2+1,n-1] делителей числаnнет.

#include <iostream.h>

main()

{ int n,d;

cin>>n;

for (d=1;d<=n/2;d++)

if(n%d==0)

cout<<d<<endl;

}

Вариант 2. Для нахождения делителей числа n, достаточно обнаружить делители не превышающие значения квадратного корня из числаn. Все остальные делители получаются в результате деления числаnна найденные делители.

#include <iostream.h>

main()

{ int n,d;

cin>>n;

for (d=1;d*d<n;d++)

if(n%d==0)

cout<<d<<", "<<n/d<<endl;

if(d*d==n)

cout<<d<<endl;

}

Пример 2. Найти наибольший делитель двух неотрицательных целых чисел.

Решение основано на алгоритме Евклида, многократно использующим целочисленную операцию деления с остатком:

n=q*m+r0,

m=q0*r0+r1,

r0=q1*r1+r2

..........................

rk-1=qk*rk+rk+1,

...........

rj-1=qj*rj,

где rj– наибольший общий делитель.

#include <iostream.h>

main()

{ long int n,m,r,tmp;

cin>>n>>m;

if(m>n)

{ tmp=m; m=n; n=tmp;}

while(m>0)

{ r=n%m; n=m; m=r; }

cout<<n;

}

Пример 3. Найти все простые числа , меньшие заданного натурального числа n.

Вариант 1.

Для решения задачи необходимо проверить имеют ли числа из заданного интервала делители, не превышающие значения квадратного корня из числа n.. Четные числа можно не рассматривать, поскольку они делятся на два.

#include <iostream.h>

main()

{ int d,k,n;

cin>>n;

cout<<1<<endl<<2<<endl<<3<<endl;

k=5;

while (k<=n)

{ for (d=2;d*d<=k && k%d!=0;d++)

;

if(d*d>k)

cout<<k<<endl;

k=k+2;

}

}

Упражнения

  1. Дано натуральное число N. Получить все его натуральные делите­ли.

  2. Найти количество делителей натурального числа N. Сколько из них четных?

  3. Найти сумму нечетных делителей натурального числа N.

  4. Найти все натуральные числа из интервала от 1 до 200, у которых количество делителей равно N.

  5. Найти сумму целых чисел из промежутка от 1 до 200, у которых ровно 5 делителей

  6. Найти все целые числа из промежутка от 100 до 300, у которых сумма делителей равна К.

  7. Найти натуральное число лежащее в диапазоне от 1 до 10000 с мак­симальной суммой делителей.

  8. Найти все натуральные числа из промежутка от К до L, у которых количество делителей превышает заданное число М.

  9. Найти сумму четных делителей натурального числа N.

  10. Найти все натуральные числа из промежутка от 1 до 200, у которых сумма четных делителей равна N.

  11. Найти количество делителей натурального числа N. больших К.

  12. Найти все целые корни уравнения ax3+bx2+cx+d=0 , где a,b,c,d – целые числа.

  13. Даны целые числа p и q Получить все делители числа q , взаимно простые с p

  14. Дано целое число n .Получить все простые делители этого числа

  15. На интервале (1000, 9999) найти все простые числа, каждое из ко­торых обладает тем свойством, что сумма первой и второй цифр в записи этого числа равна сумме третьей и четвертой цифр.

  16. Даны натуральные числа К, Ь (К < Ь). Получить все простые чис­ла I, удовлетворяющие неравенству: К < I < Ь, используя решето Эратосфена.

  17. Дано натуральное число N > 2. Составить программу разложения этого числа на простые множители. Каждый простой множитель L должен быть выведен k раз, где k-натуральное число, такое, что N делится на Lk и не делится на Lk+1;

  18. Дано натуральное число N > 2. Составить программу разложения этого числа на простые множители. Каждый простой множитель должен быть выведен один раз

  19. Найти наибольший общий делитель ( НОД ) трех чисел, используя соотношение НОД(К,L,М) = НОД(НОД( К, L ), M) и алгоритм Евклида

  20. Даны натуральные числа М, N. Получить все кратные им числа, меньшие МхN

  21. Для натуральных чисел К и L определить наименьшее общее крат­ное (НОК), используя соотношение: НОД (K,L)=KL/ НОД (K,L) Даны M ( М > 2 ) натуральных чисел: N1,N2, ..., Nм. Вычислить НОД (N1,N2, ..., Nм ), используя соотношение НОД(N1,N2, ..., Nм)= НОД(НОД(N1,N2, ..., Nм-1 ), Nм ) и алгоритм Евклида. .

  22. Найти все простые несократимые дроби, заключенные между 0 и 1, знаменатели которых не превышают 7 (дробь задается двумя нату­ральными числами - числителем и знаменателем )

  23. . Составить программу сложения двух дробей. Результат сложения - несократимая дробь

  24. Составить программу для нахождения всех совершенных чисел, мень­ших заданного числа N. Совершенным называется число, равное сумме всех своих положительных делителей ( включая единицу, но исключая само число ). Например, 28 - совершенное число, т.к. 28 = 1 + 2 + 4 + 7 + 14..

  25. Даны натуральные числа N. М. Найти все пары натуральных дру­жественных чисел, лежащих в диапазоне от N до М. Два числа на­зываются дружественными, если каждое из них равно сумме всех делителей другого ( само число в качестве делителя не рассматри­вается). .