-1
public static void main(String args[])
{
    long sum = 0;
    for(int i=0; i<Integer.parseInt(args[0]); i++)
    {
        if(i != 1 && i%2 != 0 && i%3 != 0 && i%5 != 0 && i%7 != 0)
        {
            sum = sum + i;          
        }
        if(i==2 || i==3 || i==5 || i==7)
        {
            sum = sum + i;
        }

    }
    System.out.println(sum);
}

100 を差し込むたびに、正しい 1060 が生成されます。ただし、1,000,000 (114,285,285,737) の不適切な数を生成します。

100 未満のすべての値に対して正しく生成されていますが、他に何も試していません。私は100をチェックしているだけではありません。

4

4 に答える 4

0

問題は次の条件にあります。

if(i != 1 && i%2 != 0 && i%3 != 0 && i%5 != 0 && i%7 != 0)

他の人が述べているように、それは数値が素数かどうかを確認する有効な方法ではありません。プログラムが機能しているように見える理由は、たとえば、209 は 2、3、5、または 7 で割り切れないが、209 は 11 * 19 で素数 ではないためです。

于 2013-10-28T23:42:23.990 に答える