gpt4 book ai didi

c - 我对多重性问题的 C 解决方案太慢了,需要建议

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

我希望提高效率。执行这个简单的程序需要很长时间。

您有什么建议可以让它运行得更快吗?我不确定我做错了什么使它变得如此缓慢。

仅供引用,这只是练习我的编码技能的问题。感谢帮助。它是用 C 语言编写的。

问题:计算小于 1000 的 3 和 5 的倍数之和。

#include <stdio.h>

int sumOfFivesAndThrees( int start, int limit ){
int sum = start;
int idx = 0;

printf("Your input is: %i\n", start);

while( idx <= limit ) {
if( ! idx % 3 ){
sum = sum + idx;
printf("IDX(3): %i\n", idx);
}
else if( ! idx % 5 ){
sum = sum + idx;
printf("IDX(5): %i\n", idx);
}
idx++;
}

return sum;
}

int main()
{
int answer = 0;

answer = sumOfFivesAndThrees( answer, 1000 );

printf("Your of 3's and 5's is: %i\n", answer);

return 0;
}

最佳答案

更快的解决方案是使用 Arithmetic progression :

int sumOfMultipleOfX(int minRange, int maxRange, int mul)
{
minRange = ((minRange + mul - 1) / mul) * mul; // Ceil to multiple
maxRange = (maxRange / mul) * mul; // Floor to multiple

if (maxRange < minRange) { // Check input arguments.
return 0;
}
return (maxRange + minRange) * (maxRange - minRange + mul) / (2 * mul);
}

int sumOfMultipleOf3Or5(int minRange, int maxRange)
{
return sumOfMultipleOfX(minRange, maxRange, 3)
+ sumOfMultipleOfX(minRange, maxRange, 5)
- sumOfMultipleOfX(minRange, maxRange, 15); // Count multiple of 15 only once
}

Demo

关于c - 我对多重性问题的 C 解决方案太慢了,需要建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38452366/

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