有吸引力的数字
这个例子显示了一个算法的实现,用于寻找有吸引力的数字从1到120.
导言
"有吸引力的数字"的算法是一个奇怪的数学问题,涉及确定自然数,其质因数的总和是质数。
什么是因子分解?
每个自然数可以表示为素数(因子)的乘积。 例如:
-数字12有素数因素 ,或基于学位的记录 — .
功能 factor 在Julia中,它完全像这样分解输入数字。
"吸引人"这个数字是什么意思?
当所有的总和其独特的素数因子(而不考虑程度)是素数时,一个数字被认为是有吸引力。
让我们解释一下:
- 对于数字12:因式分解→[2,3]? 总和=2+3=5。
- 由于5是素数,因此12是一个有吸引力的数字。
我们需要找到从1到120范围内的所有这些数字。
解决问题
安装所需的软件包
import Pkg; Pkg.add("Primes")
连接模块 Primes. 它提供了处理素数的函数,例如, isprime() 检查一个数字是否为素数
using Primes
功能 isattractive(n) 接受正整数 n,则:
- 
factor(n)-我们得到了一本带学位的素数除数字典
- 
values(...)-我们只取值(忽略度)
- 
sum(...)-把价值加起来
- 
isprime(...)-我们是否检查这个金额是否简单?
function isattractive(n)
    return isprime(sum(values(factor(n))))
end
功能 printattractive(m, n):
-接受两个参数-范围的边界 m 以前 n
-使用函数对m:n数组进行滤波 isattractive()
-通过以下方式输出格式精美的数字列表 println()
function printattractive(m, n)
    println("Привлекательные числа от $m до $n:\n", filter(isattractive, m:n))
end
运行计算,调用上面创建的具有指定范围的函数。
printattractive(1, 120)
结论
使用这个例子,我们已经学会了如何使用Julia编程语言的功能解决一个关于"有吸引力"数字的有趣数学问题。 我们:
-你学会如何使用图书馆了吗? Primes 用于处理素数;
-使用内置功能 factor() 从 Base.Math (标准库的一部分);
-我们写了一个函数,检查一个数字是否有吸引力;
-实现了在终端中显示结果的便捷方式。
这种方法展示了Julia代码的优雅和可读性,特别是在结合强大的内置工具和简洁的语法时。
该示例是使用[罗塞塔代码]的材料开发的(https://rosettacode.org/wiki/Attractive_numbers )