判定友好数ペア(関数トピック)
タイトルの説明
2つの正の整数mとnを入力し、mからnの間のすべての友好数ペアを順次出力します.
2つの整数のすべての正の因子の和(1を含む、自己を含まない)が相手に等しい場合、この対数は友好的であると称される.例えば、1184と1210は友好的な数対である.1184の因子の和は1+2+4+8+16+32+37+74+148+296+592=12120の因子の和が1+5+10+11+22+55+110+121+6022+605=1184であるため、プログラムはfacsum()関数とmain()関数を定義する必要がある.facsum()関数はnのすべての正因子の和を計算して返し,残りの機能はmain()関数で実現する.int facsum(int n){//nのすべての正因子の和sumを計算し、この関数はsum}を返します.
入力
2つの正の整数mとn,1を入力します.
しゅつりょく
mとnの間のすべての友好数対を出力する.各友好数ペアを出力する場合、小数を前、大数を後にし、重複する数ペアを削除する必要があります.例えば、220および284は1対の友好数であり、284および220も1対の友好数であり、この場合、220および284の友好数を出力するだけでよい.各友好数ペアは1行を占め、2つの数の間はスペースで区切られています.
mとnの間に友好数対がない場合は「No answer」を出力する.
サンプル入力
サンプル出力
ヒント:直接出力しないでください.そうすると出力が限界を超え、友好実数ペアを保存します.
2つの正の整数mとnを入力し、mからnの間のすべての友好数ペアを順次出力します.
2つの整数のすべての正の因子の和(1を含む、自己を含まない)が相手に等しい場合、この対数は友好的であると称される.例えば、1184と1210は友好的な数対である.1184の因子の和は1+2+4+8+16+32+37+74+148+296+592=12120の因子の和が1+5+10+11+22+55+110+121+6022+605=1184であるため、プログラムはfacsum()関数とmain()関数を定義する必要がある.facsum()関数はnのすべての正因子の和を計算して返し,残りの機能はmain()関数で実現する.int facsum(int n){//nのすべての正因子の和sumを計算し、この関数はsum}を返します.
入力
2つの正の整数mとn,1を入力します.
しゅつりょく
mとnの間のすべての友好数対を出力する.各友好数ペアを出力する場合、小数を前、大数を後にし、重複する数ペアを削除する必要があります.例えば、220および284は1対の友好数であり、284および220も1対の友好数であり、この場合、220および284の友好数を出力するだけでよい.各友好数ペアは1行を占め、2つの数の間はスペースで区切られています.
mとnの間に友好数対がない場合は「No answer」を出力する.
サンプル入力
100 8000
サンプル出力
220 284
1184 1210
2620 2924
5020 5564
6232 6368
ヒント:直接出力しないでください.そうすると出力が限界を超え、友好実数ペアを保存します.
#include
#include
int
fac(
int
n)
{
int
i,m,sum=1;
for
(i=2;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
{
j=s[i-m];
if
(j>i&&j<=n&&s[j-m]==i)
flag=1,// 。
printf
(
"%d %d
"
,i,j);
}
if
(!flag)
printf
(
"No answer
"
);
return
0;
}