Tema Descripción
Ingrese dos enteros positivos m y n, genere secuencialmente todos los pares de números amistosos entre m y n.
Se dice que un logaritmo es amigable si la suma de todos los factores positivos de dos números enteros (incluido 1, excluyéndose a sí mismo) es igual al otro. Por ejemplo: 1184 y 1210 son pares amistosos, porque la suma
de los factores de 1184 es 1+2+4+8+16+32+37+74+148+296+592=1210 La suma de los factores de 1210
es 1+2+ 5+10+11+22+55+110+121+242+605=1184
requiere que el programa defina una función facsum () y una función principal (), la función facsum () calcula y devuelve la suma de todos los factores positivos de n, y el resto La función se implementa en la función main().
int facsum (int n)
{
// calcular la suma de todos los factores positivos de n, esta función devuelve sum
}
ingresar
Ingrese dos enteros positivos m y n, 1<m<=n<=10000.
producción
Muestra todos los pares de números amistosos entre m y n.
Al generar cada par de números amistosos, se requiere que el número decimal esté delante del número grande y se eliminan los pares de números repetidos. Por ejemplo, 220 y 284 son un par de números amigables, y 284 y 220 también son un par de números amigables. En este momento, solo necesita generar el par de números amigables 220 y 284. Cada par de números amistosos ocupa una línea y los dos números están separados por espacios.
Si no hay un par amigo entre m y n, emite "Sin respuesta".
entrada de muestra
100 8000
salida de muestra
220 284 1184 1210 2620 2924 5020 5564 6232 6368
Consejo: no emita directamente, de lo contrario, la salida excederá el límite, guarde todos los pares de números reales amistosos
#include <stdio.h>
#include <stdlib.h>
int
fac(
int
n)
{
int
i,m,sum=1;
for
(i=2;i<n;i++)
{
if
(n%i==0)
{
m=n/i;
sum=sum+i;//找N的因数并加起来;
}
}
return
sum;
}
int
main( )
{
int
m,n,i,j,flag=0;
scanf
(
"%d%d"
,&m,&n);
int
s[n];
for
(i=0;i<=n-m;i++)
s[i]=fac(i+m);//将每个数的因数和都保存下来。
for
(i=m;i<n;i++)
{
j=s[i-m];
if
(j>i&&j<=n&&s[j-m]==i)
flag=1,//判断是否有值。
printf
(
"%d %d\n"
,i,j);
}
if
(!flag)
printf
(
"No answer\n"
);
return
0;
}