C言語---「親密数」問題
961 ワード
質問:3000以内の親密数を探していますか?
親密数は「A数の因子和」=「数B」であり、「B数の因子和」=「数A」であり、AとBは親密数である.
アルゴリズムの考え方:
(1)3,000の範囲にわたる各数
(2)【Aの因子和】を求め、【数B】に保存する
(3)求めた【Bの因子和】を、【数N】に保存する
(4)「数N」(Bの因子和)が「数A」に等しいかを比較する
コードは次のとおりです.
親密数は「A数の因子和」=「数B」であり、「B数の因子和」=「数A」であり、AとBは親密数である.
アルゴリズムの考え方:
(1)3,000の範囲にわたる各数
(2)【Aの因子和】を求め、【数B】に保存する
(3)求めた【Bの因子和】を、【数N】に保存する
(4)「数N」(Bの因子和)が「数A」に等しいかを比較する
コードは次のとおりです.
#include
void main()
{
int numA,numB,numN,i;
printf(" 3000 :
");
// 3000
for(numA = 1; numA<3000; numA++)
{
// numA ,
for(numB = 0, i = 1; i<=numA/2; i++)
{
if(!(numA%i))
numB+= i;
}
// numB ,
for(numN = 0, i = 1; i<=numB/2; i++)
{
if(!(numB%i))
numN+= i;
}
if(numN==numA&&numA
:
numB=0 numN=0 , numB numN 0, 。
, 。
: , 。