思路
以下两种代码思路是一模一样的,相当于用matlab翻译了一遍c语言版本的代码。
即先遍历找出完数,再在找出时利用循环打印出因子。先前我纠结于在利用因子相加查找完数时便要将因子存储起来,后来参考了一些代码发现了更易实现的方法,就是查找之后再找一遍因子并打印。这样就容易多了。
C语言实现
代码
#include<stdio.h>
int main(){
int i,j,s,k,tag;
for(i=1;i<=2000;i++){
s=0;
for(j=1;j<=i/2;j++){
if(i%j==0)
s=s+j;
}
if(s==i){
printf("%d=",i);
for(k=1;k<=i/2;k++){
if(k==i/2){
printf("%d\n",k);
}
else if(i%k==0){
printf("%d+",k);
}
}
}
}
return 0;
}
运行结果
matlab实现
代码
clc;clear all;close all;
for i=1:2000
s=0;
for j=1:i/2
if mod(i,j)==0
s=s+j;
end
end
if s==i
fprintf('%d=',i);
for k=1:i/2
if k==i/2
fprintf('%d\n',k);
elseif mod(i,k)==0
fprintf('%d+',k);
end
end
end
end
运行结果
本人太过小白,如有不足之处还望指出。