在我的项目中,我需要使用MySQL找到整数的质因数分解,我认为这是查询除了递归之外的高效方式。我想要实现的是找到组成一个整数的质数。例如:对于102,其质因数将是:17,3,2。谢谢。
信封背面策略(仍需要编程循环进行第二步)
创建一个名为“primes”的表,只有一个int列(主键)
运行以下循环:
for $x = 2 to $n {
execute("
insert into primes (id)
select $x where not exists
(select * from primes as p where p.id <= sqrt($x) AND ($x mod p.id) > 0)")
}
使用上述子查询列出特定$x的结果
这个解决方案适用于小于等于$n^2$的值。第二步可以通过仅测试以1、3、7、9结尾的数字中大于9的数字来改进。
integer
为索引,包含(整数,因子)
。由于只有一百万行,查找应该非常快。当然,填充表中的“因子”是另外一个问题... - eggyal