试着编了一下,还能用,你看看吧^_^
#include
#include
void main(int argc, char* argv[])
{
int N,fkt1[100],fkt2[100],i,j,k,l,m,n=0,num1,num2,rslt[100][100];
cout<<"请输入范围(0~32768):";
cin>>N;
for(i=4;i {
num1=1;
num2=1;
k=0;
m=0;
for(j=2;j<=i/2;j++) //寻找A的因子并计算因子之和
{
if(i%j==0)
{
fkt1[k++]=j;
num1+=j;
}
}
if(num1>i&&num1<=N) //判断是否3〈A〈B〈=N
{
for(l=2;l<=num1/2;l++) //寻找B的因子并计算因子之和
{
if(num1%l==0)
{
fkt2[m++]=l;
num2+=l;
}
}
if(num2==i) //判断B的全部因子之和(本身除外)是否等于A
{
rslt[n][0]=i;
j=0;
while(fkt1[j])
{
rslt[n][j+1]=fkt1[j];
j++;
}
rslt[n+1][0]=num1;
j=0;
while(fkt2[j])
{
rslt[n+1][j+1]=fkt2[j];
j++;
}
n+=2;
}
}
}
for(i=0;i {
cout<<"("< cout< j=0;
while(rslt[i+1][j]>0&&rslt[i+1][j] {
cout<<" "< j++;
}
cout<<"之和为"< cout< j=0;
while(rslt[i][j]>0&&rslt[i][j] {
cout<<" "< j++;
}
cout<<"之和为"< }
}
--------------------next---------------------
我可不是什么高手,我又看了一下,昨天马虎了,没有实现全部的功能,有两个错,错的比较巧,所以没看出来。
这是更新以后的:
void main(int argc, char* argv[])
{
int N,fkt1[100],fkt2[100],i,j,k,l,m,n=0,p,num1,num2,rslt[100][100];
cout<<"请输入范围(0~32768):";
cin>>N;
for(i=4;i {
num1=1;
num2=1;
k=0;
m=0;
for(p=0;p<100;p++) //每次循环前对存放因子的临时数组重新赋值
{
fkt1[p]=0;
fkt2[p]=0;
}
for(j=2;j<=i/2;j++)
{
if(i%j==0)
{
fkt1[k++]=j;
num1+=j;
}
}
if(num1>i&&num1<=N)
{
for(l=2;l<=num1/2;l++)
{
if(num1%l==0)
{
fkt2[m++]=l;
num2+=l;
}
}
if(num2==i)
{
rslt[n][0]=i;
j=0;
while(fkt1[j])
{
rslt[n][j+1]=fkt1[j];
j++;
}
rslt[n+1][0]=num1;
j=0;
while(fkt2[j])
{
rslt[n+1][j+1]=fkt2[j];
j++;
}
n+=2;
}
}
}
for(i=0;i {
cout<<"("< cout< j=1; //把j的值改一下才对
while(rslt[i+1][j]>0&&rslt[i+1][j] {
cout<<" "< j++;
}
cout<<"之和为"< cout< j=1; //把j的值改一下才对
while(rslt[i][j]>0&&rslt[i][j] {
cout<<" "< j++;
}
cout<<"之和为"< }
}
真是不好意思,怪我粗心大意。◎_◎
--------------------next---------------------
阅读(1028) | 评论(0) | 转发(0) |