gpt4 book ai didi

c# - 3 或 5 的倍数按升序排列

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:31:50 28 4
gpt4 key购买 nike

我想以最快的方式获取所有小于给定数字的 3 或 5 的倍数。所以我做了下面的代码:

double limit = number / 5;
for (var i = 0; i <= number / 3; i++)
{
list.Add(i * 3);
if (i <= limit && ((i * 5) % 3 != 0))
{
list.Add(i * 5);
}
}

但结果列表不会按升序排序。如果 number = 11,列表包含

0, 3, 5, 6, 10, 9

代替

0, 3, 5, 6, 9, 10

要获得排序列表,我可以使用像这样的简单迭代:

for (var i = 0; i <= number; i++)
{
if (i % 3 == 0 || i % 5 == 0)
{
list.Add(i);
}
}

但练习的主要目的是找出最快的算法。

我是否遗漏了第一个算法中的某些内容,还是应该保留第二个算法?

最佳答案

这是我的实现,尽管就 BigO 符号而言它可能不是最快的。

    static void Main(string[] args)
{
int number = 35;
List<int> list = new List<int>();
int count3 = 0;
int count5 = 0;
int step3 = 3;
int step5 = 5;
while (count3 < number || count5<number )
{
if ((count3 + step3) <= (count5 + step5))
{
count3 += step3;
if (count3 <= number)
{
list.Add(count3);
}
}
else
{

count5 += step5;
if (count5 <= number)
{
list.Add(count5);
}
}

}
foreach (var l in list)
{
Console.WriteLine(l.ToString());
}
Console.ReadLine();

}

关于c# - 3 或 5 的倍数按升序排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43688055/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com