项目欧拉#3双师

时间:2014-04-20 16:41:37

标签: java

我目前正在研究Project的Euler Problem 3,由于缺乏编程技巧,我一直都在失败。 这个问题的意思是,这个数字对于int来说太大了。 因此我用了双倍。可悲的是,我的整个代码都基于整个部门。

`

public static ArrayList PrimeDeco(double Insert, int Position, ArrayList PrimeFactor){
    ArrayList<Integer> Prime= new ArrayList<Integer>();
    Prime=Primenumbers(1000);
    int i = Position;
    while(Insert%(Integer)Prime.get(i)==0){
        Insert=Insert/Prime.get(i);
    }
    PrimeFactor.add((Integer)Prime.get(Position));
    System.out.println(PrimeFactor);

    if(Insert!=1){
    System.out.println(Insert + " "  + Position);
    PrimeDeco(Insert,Position+1, PrimeFactor);

    }
    return PrimeFactor;
}

Insert的类型为double,Prime.get(i)为Primenumber。 在使用Integer 70时,我的程序打印[2,5,7] 70,35,7,11部门。但很明显,这不适用于双重类型数字,我不知道如何在没有逗号的情况下获得整数。

1 个答案:

答案 0 :(得分:2)

使用long代替intdoublelong是一种数据类型,可以存储最多2 ^ 64(2 ^ 63-1)的整数值。

您还可以使用BigInteger这是一个可以存储任意大小整数的对象。