簡體   English   中英

ProjectEuler Q1程序意外結果

[英]ProjectEuler Q1 Program unexpected result

我正在研究第一個問題,我的原始程序看起來像這樣

int multiplesof=1000,count=0, multiple1 = 3, multiple2 = 5,val1,val2,sum=0;

while (count < multiplesof)
{
    if (count % multiple1 == 0)
        sum = sum += count;
    if (count % multiple2 == 0)
        sum = sum += count;
    count++;
}
Console.Out.WriteLine(sum + " is the sum of all multiples");
Console.In.ReadLine();

它為我提供了266333的解決方案。事實證明這是錯誤的,我在看Google時感到困惑。 此后,通過以下循環獲得了正確的值233168。 但是對我來說,他們看起來就像在做完全一樣的事情。 誰能解釋為什么他們提出不同的答案?

while (count < multiplesof)
{
    if (count % multiple1 == 0 || count % multiple2 == 0)
        sum = sum += count;
    count++;               
}

因為如果它是3和5的倍數,則添加了兩次,例如15時。

如果您要嘗試自己解決問題,則可以選擇另一種解決方案,也可以破壞一下:

int result = 3 * (999 / 3 * (999 / 3 + 1) / 2) + 5 * (999 / 5 * (999 / 5 + 1) / 2) - 15 * (999 / 15 * (999 / 15 + 1) / 2);

考慮可以被3和5整除的數字,例如15。您的第一次嘗試對它們進行了兩次計數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM