1154:亲和数
时间限制: 1000 ms ??? ??? 内存限制: 65536 KB 提交数: 32592 ??? 通过数: 19760
【题目描述】
自然数a的因子是指能整除a的所有自然数,但不含a本身。例如12的因子为:1,2,3,4,6。若自然数a的因子之和为b,而且b的因子之和又等于a,则称a,b为一对“亲和数” 。求最小的一对亲和数(a<>b)。
【输入】
【输出】
【输入样例】
(无)
【输出样例】
(无)
代码:
//亲和数
#include<iostream>
using namespace std;
int findnumber(int number1);
int main()
{
int a=1;
int b=0;
while(a)
{
if(findnumber(a)!=1)
{
b=findnumber(a);
if(a==findnumber(b)&&a!=b)
{
cout<<a<<" "<<b;
break;
}
}
a++;
}
return 0;
}
int findnumber(int number1)
{
int boxi=1;
for(int i=2;i<number1;i++)//6 - 1 2 3 =6
{
if(number1%i==0)// 2 3
{
boxi=boxi+i;// 3 6
}
}
return boxi;
}
?升级
??
//亲和数
#include<iostream>
using namespace std;
int findnumber(int number1);
int main()
{
int a=1;
//int b=0; //b没必要
while(1) //20220517设计改进 //while(a)可以改成while(1)
{
//if(findnumber(a)!=1) // 这个地方会进行程序,浪费
{
//b=findnumber(a); //这个b初始化也没必要。
if(a==findnumber(findnumber(a))&&a!=findnumber(a))
{
cout<<a<<" "<<findnumber(a);
break;
}
}
a++;
}
return 0;
}
int findnumber(int number1)
{
int boxi=1;
for(int i=2;i<number1;i++)//6 - 1 2 3 =6
{
if(number1%i==0)// 2 3
{
boxi=boxi+i;// 3 6
}
}
return boxi;
}
|