Closed. This question is off-topic. It is not currently accepting answers. Learn more。
想改进这个问题吗?Update the question所以堆栈溢出的值小于aa>。
如果我们列出10以下所有3或5的倍数的自然数,我们得到3、5、6和9。这些倍数之和是23。找出1000以下3或5的所有倍数之和。
所以我决定尝试在Euler站点上解决一些问题来改进编程当我试图解决第一个问题时,我写了一个快速的代码来计算和,它对10个数字起作用,但对于1000个数字,它告诉我答案:166833,这是错误的,我在这里找不到真正的问题如果有人能给我一个提示,让我改进我的算法,这样就行了。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Multiplies_of_3_and_5
{
class Program
{
static void Main(string[] args)
{
int[] array = new int[7000];
for (int j = 0; j<array.Length ;j++)
{
array[j] = j + 1;
}
int n = 1;
int z = 1;
int numbers = 0;
for (int i = 0; i<999; i++)
{
if (array[i] == 3 * n )
{
n++;
numbers += array[i];
}
else if (array[i] == 5 * z)
{
z++;
numbers += array[i];
}
}
Console.WriteLine(string.Join(" ", numbers));
Console.ReadLine();
}
}
}
最佳答案
你应该读一下模运算符。
static void main(String[] args)
{
int sum = 0;
for(int i=1; i< 1000; i++){
if (i % 3 == 0 || i % 5 == 0){
sum += i;
}
}
Console.WriteLine(sum);
}
为了给出解释,模运算符在对值执行整数除法时给出余数。
例如,6%3==0(3等分6),7%3==1(7除以3剩下的1)。
所以要对3和5的所有倍数求和,只需检查该值是否被3或5等分(if语句),如果是,则将其添加到运行和中。
注意,当你得到3和5的倍数时,你的算法会出错在那种情况下你永远不会加z您还需要将其更改为总结一下:
直接使用循环变量,不需要预先填充另一个
数组或有单独的值来跟踪
在。
模是非常有用的。
关于c# - 欧拉计划1:找到1000以下的3或5的所有倍数的总和,适用于10个数字,但不适用于1000个数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47320171/
10-11 00:42