Author: Manba Cople
专业:IOT
说明:记录和输出学习内容
问题
计算100000以内亲合数,即A的真因子之和等于B,B的真因子之和等于A,比如220和284。
算法流程图
代码
close all;
clear;clc;
N=1e05; % 所取数范围
fac_sum=zeros();
for A=1:N % 被除数
fac_sum(A)=0; % 所有因式和
for x=1:(A-1) % 除数
if (mod(A,x)==0)
fac_sum(A)=fac_sum(A)+x; % 每个数所有真因式之和
end
end
end
fprintf('%g范围内的亲和数:\n',N);
for i=1:N
B=fac_sum(i);
if B>0 && B<= N % 使得数字B在数组的索引范围内
if fac_sum(B) == i && (B~=i) % 亲和数的条件,同时剔除本身相等情况
fprintf('%g,%g\n',B,i);
end
end
end