function perf(n:integer):boolean;
var i,s:integer;
begin s:=0;
for i:=1 to n div 2 do
if n mod i = 0 then s:=s+i;
perf:=s=n
end;
алгоритм по совершенным числам
Задача напечатать все совершенные числа, меньшие, чем заданное M. (Натуральное число называется совершенным, если оно равно сумме всех своих собствен-ных делителей, включая 1.)
Код:
остальная часть программы совсем простая
А допустим как можно записать полученный результат в Массив?
ну если уж нужно то создаете массив делаете по нему цикл и проверяя каждый раз perf(i) записываете
Если не затруднит, напишите пожалуйста кусок кода, переведенного на C++ по нахождению совершенного числа, меньше определенного N и запись его в массив. Спасибо.
Код:
int arr[];
bool perf(int x)
{
for( int i = 1, s = 0; i < (x/2); i++ )
if( (x % i) == 0 )
s += i;
return (s == x);
}
void c(int N)
{
for( int i = 1, q = 0; i < N; i++ )
if( perf(i) == true )
arr[q++] = i;
}
bool perf(int x)
{
for( int i = 1, s = 0; i < (x/2); i++ )
if( (x % i) == 0 )
s += i;
return (s == x);
}
void c(int N)
{
for( int i = 1, q = 0; i < N; i++ )
if( perf(i) == true )
arr[q++] = i;
}
Цитата: Mr.Hacker
if( perf(i) == true )
не увлекайтесь такими записями
не проще if perf(i)