Как найти совершенное число в c
1. Найти произведение совершенных чисел из 10 случайных, взятых в интервале[1, 10].
Ответ может быть таким:
8 9 9 1 5 4 10 9 1 9
совершенных чисел нет
8 1 3 1 9 6 8 6 8 2
произведение совершенных чисел=36
-
i — делители;
p — произведение чисел;
ch — число;
sum — сумма делителей >
-
begin
ch:= random(10)+1; write(ch:5);
sum :=0;
For i:=1 to ch-1 do
-
if ch mod i =0 then sum:=sum +i;
if p > 1 then writeln(‘произведение совершенных чисел=’,p)
else writeln(‘совершенных чисел нет’)
Наверх
Блок-схема
2. Поиск совершенных чисел в заданном с клавиатуры интервале.
for num:=x1 to x2 do
-
begin
sum:=1;
for i:=2 to (num-1) do
-
if num mod i=0 then sum:=sum+i;
Наверх
Блок-схема
3. Из 10 случайных чисел в интервале [1, 10] найти количество совершенных.
Пояснение: фактически надо найти количество шестерок.
Ответ может быть таким: 6 6 6 kch=3
-
for n:=1 to 10 do
begin
-
ch:=random (10-1+1)+1;
sum:=0;
for i:=1 to ch-1 do
-
if ch mod i=0 then sum :=sum+i;
-
begin write(ch:5); inc(kch) end;
Наверх
Блок-схема
4. Дано натуральное число N. Определить, является ли оно совершенным.
-
Sum:=0;
for i:=1 to n div 2 do
-
if n mod I=0 then sum:=sum+i;
Наверх
Блок-схема
5. Вычислить ch/8+4, где ch — четвертое совершенное число.
-
koldel — количество делителей;
del — делители;
Sd — сумма делителей;
k — количество чисел;>
-
begin inc(ch);
Sd:=0 ;
for del:=1 to ch-1 do
-
if ch mod del=0 then Sd:=Sd + del;
Наверх
Блок-схема
Совершенные числа на C++
Целое число называется совершенным, если его сомножители, включая 1 (но не само число) в сумме дают это число. Например, 6 — это совершенное число, так как 6 = 1 + 2 + 3. Напишите функцию is_perfect, которая определяет, является ли параметр number совершенным числом. Используйте эту функцию в программе, которая определяет и печатает все совершенные числа в диапазоне от 1 до 1000.
#include using namespace std; bool is_perfect(int num) < int sum = 0; //в цикле для полученного функцией аргумента //будем находить его сомножители, путем деления его на все //целые числа в интервале от 1 до самого числа for(int j = 1; j < num; j++) < if(num % j == 0) sum += j; >//если число и сумма его сомножителей равны - значит число совершенное if(sum == num) return true; return false; > int main() < for (int i = 1; i < 1000; ++i) < if (is_perfect(i)) < cout > >
Результат работы программы:
28.06.2019 в 19:47 #5692
1/2 часть цикла функции is_perfect работает впустую.
Из теории чисел известно, что все делители произвольного числа меньше половины этого числа, то есть j Учитывая этот факт, можно переписать is_perfect так:
bool is_perfect(int num) < int sum = 0; for (int j = 1; j > return sum == num; >
29.06.2019 в 06:07 #5693
Как найти совершенное число в c
Новости:
Если Вы не можете войти на форум, потому что не подходит пароль, его нужно восстановить по указанной там ссылке.
http://seoaction.net/index.php?topic=877
- Seoaction.net — seo и не только. »
- Веб-строительство и веб-дизайн »
- Программирование »
- C, C++, C# (Си, Си плюс, Си флеш) »
- Функция на совершенное число
Страницы: [1] Вниз
Автор Тема: Функция на совершенное число (Прочитано 2281 раз)
0 Пользователей и 1 Гость просматривают эту тему.
Страницы: [1] Вверх
- Seoaction.net — seo и не только. »
- Веб-строительство и веб-дизайн »
- Программирование »
- C, C++, C# (Си, Си плюс, Си флеш) »
- Функция на совершенное число
Быстрый ответ
В быстром ответе можно использовать BB-теги и смайлы.
Размер занимаемой памяти: 4 мегабайта.
Страница сгенерирована за 0.202 секунд. Запросов: 37.
Совершенные числа
Число совершенно, если оно равно сумме всех своих делителей, кроме самого себя. Пример: 6 = 1 + 2 + 3. Найдите все совершенные числа от 1 до 10000 и выведите их на экран.
Подсказка: необходимо найти все делители от 1 до тестируемого числа. Делителем числа называется число, которое делит данное без остатка ( a mod b = 0 ).
Алгоритм решения задачи:
- Каждое число от 1 до 1000 поочередно делить на все целые числа от 1 до этого числа. На самом деле достаточно до половины заданного числа.
- Найти сумму всех делителей и сравнить с самим числом. Если сумма и число равны, то последнее является совершенным.
Программа на языке Паскаль:
const N = 10000; var i, j, sum: integer; begin for i := 2 to N do begin sum := 0; for j := 1 to i div 2 do begin if i mod j = 0 then sum := sum + j; end; if sum = i then writeln(i, ' - perfect!'); end; end.
Результат выполнения программы:
6 - perfect! 28 - perfect! 496 - perfect! 8128 - perfect!