N = input('输入正整数:');% 所取数范围 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 把fprintf改成disp
时间: 2024-03-15 21:46:27 浏览: 137
css.rar_FAC657、COM_c2ecb2;color:_extjs4_extjs的库_html aef css包装
这段代码实现了查找小于等于 `N` 的所有亲和数的功能。
代码的思路是先计算每一个数的因子和,然后从小到大遍历每一个数,判断其因子和是否为另一个数,且另一个数的因子和是否为当前数,如果满足这两个条件,则这两个数为亲和数。
以下是 Python 代码实现该功能:
```python
N = int(input('输入正整数:'))
# 计算每个数的因子和
fac_sum = [0] * (N+1)
for A in range(1, N+1):
for x in range(1, A):
if A % x == 0:
fac_sum[A] += x
# 查找亲和数
print(f'{N}范围内的亲和数:')
for i in range(1, N+1):
B = fac_sum[i]
if 0 < B <= N and fac_sum[B] == i and B != i:
print(f'{B}, {i}')
# 将 fprintf 改为 disp
# disp(f'{N}范围内的亲和数:')
# for i in range(1, N+1):
# B = fac_sum[i]
# if 0 < B <= N and fac_sum[B] == i and B != i:
# disp(f'{B}, {i}')
```
以上代码中,`fac_sum` 列表保存了每一个数的因子和,`for` 循环遍历了每一个数,并判断其是否为亲和数,最后输出所有亲和数。注释部分是 MATLAB 的代码,可以将 `fprintf` 改为 `disp` 来输出结果。
阅读全文