Не работает программа, выдает ошибку
Два натуральных числа называют дружественными, если каждое из них равно сумме всех делителей другого, кроме самого этого числа. Найти все пары дружественных чисел, лежащих в диапазоне от 0 до 300
выдает ошибку "exited, floating point exception"
#include <stdio.h>
#include <math.h>
int main(void)
{
int i,j,ai=1,bj=1;
int sum1=0;
int sum2=0;
for ( i = 1; i <300; i++)
{
for ( j = 1; j <300; j++)
{
for (ai = 1;i - 1; ai++)
{
if (i % ai == 0)
sum1 = sum1 + ai;
}
for (bj = 1; j - 1; bj++)
{
if (j % bj == 0)
sum2 = sum2 + bj;
}
if ((i == sum2) && (j == sum1))
printf("%d - %d",i,j);
else
printf("no");
sum1 = 0;
sum2 = 0;
}
}
return 0;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
#include <stdio.h>
int divsum(int M)
{
int sum = 1;
for(int i = 2; i*i <= M; ++i)
if (M%i==0) sum += i + ((M/i != i) ? M/i : 0);
return sum;
}
int main()
{
for(int N = 1; N <= 300; ++N)
{
int M = divsum(N);
if (M >= N) continue;
if (divsum(M) == N) printf("%d -- %d\n",M,N);
}
}