当前位置:  开发笔记 > 编程语言 > 正文

欧拉项目帮助(问题12) - 主要因素等

如何解决《欧拉项目帮助(问题12)-主要因素等》经验,为你挑选了1个好方法。

我讨厌不得不问,但我已经被困在这里了.

我需要测试一系列数字来找到第一个有超过500个因子的数字:http: //projecteuler.net/index.php?section = problem&id = 12

- 首先我试图强行回答(在很长一段时间后找到一个480的数字)

- 我现在正在考虑确定数字的素因子,然后用它们来找出所有其他因素.

我目前处于可以获得任何数字输入的一系列素数因子的阶段 - 即300具有素因子2 2 3 5 5

使用这个素数因子我需要能够计算剩余因子 - 这是我坚持的部分.基本上,据我所知,我需要计算数组中所有可能的数字组合......

即2*2
2*2*3
2*2*3*5
2*3
2*3*3
......等等 - 但有趣的地方是......
2*5
2*3*5
...即阵列中彼此不相邻的数字

对于任何长度数组,我都想不出以通用的方式编写代码的方法......

我需要帮助!PS - 我在Java工作

编辑:我的强力代码 - 因为它已被建议暴力强迫问题将工作,所以我的代码可能有一个错误:(

package euler.problem12;

public class Solution {

    public static void main(String[] args) {
        int next = 1;
        int triangle = 0;
        int maxFactors = 0;

        while(true) {
            triangle = triangle + next;

            int factors = 1;
            int max = (int) triangle / 2;

            for(int i = 1; i <= max; ++i) {
                if(triangle % i == 0) {
                    factors ++;
                }
            }

            if(factors > maxFactors) {
                maxFactors = factors;

                System.out.println(triangle + "\t" + factors);
            }

            next++;
        }
    }
}

The Archetyp.. 9

好的,第二次尝试,因为我太困难了.

答案在这里给出:http://mathforum.org/library/drmath/view/57151.html

如果将一个数字分解为其主要功率因子,则通过将所有指数加1并将这些结果相乘来找到因子总数.示例:108 = 2 ^ 2*3 ^ 3,因此因子的总数是(2 + 1)*(3 + 1)= 3*4 = 12.果然,因子108是1,2,3 ,4,6,9,12,18,27,36,54和108.这是因为要成为一个因素,数字必须具有相同的素数,并且提升到相同或更低的幂.

因此,如果你知道主要因素,你只需要计算重复因子并使用上面的计算来计算出因子的数量.



1> The Archetyp..:

好的,第二次尝试,因为我太困难了.

答案在这里给出:http://mathforum.org/library/drmath/view/57151.html

如果将一个数字分解为其主要功率因子,则通过将所有指数加1并将这些结果相乘来找到因子总数.示例:108 = 2 ^ 2*3 ^ 3,因此因子的总数是(2 + 1)*(3 + 1)= 3*4 = 12.果然,因子108是1,2,3 ,4,6,9,12,18,27,36,54和108.这是因为要成为一个因素,数字必须具有相同的素数,并且提升到相同或更低的幂.

因此,如果你知道主要因素,你只需要计算重复因子并使用上面的计算来计算出因子的数量.

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有