一、相亲数 【题意】
如果对于两个大于1的正整数x和y,x除了本身以外的因子之和等于y,y除了本身以外的因子之和等于x,则称x和y是一对相亲数。
比如220除了本身以外的因子之和110+55+44+22+20+11+10+5+4+2+1=284,而284除了本身以外的因子之和142+71+4+2+1=220,则220和284就是一对相亲数。
请你编写一个程序计算x和y分别除了本身以外的因子之和,并判断x和y是不是一对相亲数。x和y为大于1的int范围内的整数。
第二行输出y,一个逗号,y的除了本身以外的因子之和的计算过程(见题意,要求降序输出每个因子),不要有多余的空格。
第三行,如果x和y是一对相亲数输出1,否则输出0。文末换行可有可无。
数组的引用。
如果对于两个大于1的正整数x和y,x除了本身以外的因子之和等于y,y除了本身以外的因子之和等于x,则称x和y是一对相亲数。
比如220除了本身以外的因子之和110+55+44+22+20+11+10+5+4+2+1=284,而284除了本身以外的因子之和142+71+4+2+1=220,则220和284就是一对相亲数。
请你编写一个程序计算x和y分别除了本身以外的因子之和,并判断x和y是不是一对相亲数。x和y为大于1的int范围内的整数。
【输入】
x和y,空格隔开。
【输出】
第一行输出x,一个逗号,x的除了本身以外的因子之和的计算过程(见题意,要求降序输出每个因子),不要有多余的空格。第二行输出y,一个逗号,y的除了本身以外的因子之和的计算过程(见题意,要求降序输出每个因子),不要有多余的空格。
第三行,如果x和y是一对相亲数输出1,否则输出0。文末换行可有可无。
【样例1】
标准输入
220 284
标准输出
220,110+55+44+22+20+11+10+5+4+2+1=284
284,142+71+4+2+1=220
1
【样例2】
标准输入
1184 1120
标准输出
1184,592+296+148+74+37+32+16+8+4+2+1=1210
1120,560+280+224+160+140+112+80+70+56+40+35+32+28+20+16+14+10+8+7+5+4+2+1=1904
0
#include<iostream>
using namespace std;
int find_cp(const int num,int (&cp)[1000])
{
int temp=num-1;
int count=0;
int sum=0;
while(temp>0)
{
if(num%temp==0)
{
cp[count]=temp;
sum+=temp;
count++;
}
temp--;
}
return sum;
}
void main()
{
int a,b;
while((cin>>a)&&(cin>>b))
{
int cp_a[1000]={0};
int cp_b[1000]={0};
int sum_a,sum_b;
sum_a=find_cp(a,cp_a);
sum_b=find_cp(b,cp_b);
cout<<a<<",";
int i=0;
for(i=0;cp_a[i]!=0;i++)
{
cout<<cp_a[i];
if(cp_a[i+1]!=0)cout<<"+";
}
cout<<"="<<sum_a<<endl;
cout<<b<<",";
for(i=0;cp_b[i]!=0;i++)
{
cout<<cp_b[i];
if(cp_b[i+1]!=0)cout<<"+";
}
cout<<"="<<sum_b<<endl;
if((sum_a==b)&&(sum_b=a))cout<<"1"<<endl;
else cout<<"0"<<endl;
}
}
数组的引用。