You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用for循环正确统计范围内某因子的倍数数量?(C#入门)

问题:统计指定范围内因子的倍数数量

给定三个整数start、end和factor,使用循环统计start到end(包含两端)之间factor的倍数数量。例如start=14、end=35、factor=3时,结果应为7。


你的尝试代码存在的问题

第一个代码

public static int Test1(int start, int end, int factor)
{
    for(int i = start; i <= end; i++)
    {
        int result = i % factor;                    
        {
            return i;
        }
    }
    return 0;
}
  • 逻辑完全错误:计算i%factor后未判断是否为0,且第一次循环就直接返回i,完全没有统计倍数数量,仅返回了起始值。

第二个代码

public static int Test1(int start, int end, int factor)
{
    for(int i = 0; start <= end; i++)
    {
        if(start + factor <= end)
        {
            factor++;
            continue;
        }
        else
        {
            return i;
        }
    }
    return 0;
}
  • 非法修改输入参数factor,破坏了原始输入;
  • 循环条件start <= end未被修改(除非初始start > end),会触发无限循环;
  • 逻辑完全偏离需求,和统计倍数无任何关联。

第三个代码

public static int Test1(int start, int end, int factor)
{
    for (int i = 0; start <= end; i++)
    {
        if (start + factor < end)
        {
            start+=factor;
        }
        else
        {
            return i;
        }
    }
    return 0;
}
  • 未处理start本身不是factor倍数的情况(比如例子中14不是3的倍数,第一个有效倍数是15,但代码从14开始累加);
  • 条件判断start + factor < end错误,应该用<= end,会漏掉最后一个符合条件的数;
  • 计数逻辑不准确,无法得到正确的倍数数量。

正确的实现方案

方案1:遍历每个数统计(适合新手理解)

遍历范围内的每个数,判断是否是factor的倍数,是则计数器加1:

public static int Test1(int start, int end, int factor)
{
    int count = 0;
    // 遍历start到end的所有整数
    for (int i = start; i <= end; i++)
    {
        // 判断当前数是否能被factor整除(即是否是factor的倍数)
        if (i % factor == 0)
        {
            count++;
        }
    }
    return count;
}

方案2:优化循环(效率更高)

无需遍历每个数,直接找到第一个大于等于start的factor倍数,然后每次累加factor直到超过end,循环次数更少:

public static int Test1(int start, int end, int factor)
{
    int count = 0;
    // 计算第一个大于等于start的factor倍数
    int firstMultiple = ((start + factor - 1) / factor) * factor;
    
    // 从第一个倍数开始,每次加factor,直到超过end
    for (int current = firstMultiple; current <= end; current += factor)
    {
        count++;
    }
    return count;
}

两种方案都能正确得到结果,比如测试start=14、end=35、factor=3时,都会返回7。


内容的提问来源于stack exchange,提问作者Sean Wolf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 12:20:32