#include
int main()
{
int n,i,m=0,k=0;
scanf("%d",&n);
for(i=219;i<=n;i++)
{
for(int j=1;j
{
if(i%j==0)
m+=j;
}
for(int j=1;j
{
if(m%j==0)
k+=j;
}
if(k==i&&i
printf("%d %d",i,m);
}
return 0;
}
for(int j=1;j<i/2;j++)//m公因数存k
这里应该是j<=m/2吧
其它问题还有一些,修改如下:
#include<stdio.h>
int main()
{
int n,i,m=0,k=0;
scanf("%d",&n);
for(i=219;i<=n;i++)
{
m=0,k=0;
for(int j=1;j<=i/2;j++)//i公因数存m
{
if(i%j==0)
m+=j;
}
for(int j=1;j<=m/2;j++)//m公因数存k
{
if(m%j==0)
k+=j;
}
if(k==i && i < m)
printf("%d %d\n",i,m);
}
return 0;
}