C#返回一个数字和剩余部分的数字的倍数?

JL.*_*JL. 0 c#

我想找到给定一定数量的所有3的倍数,并找到余数.

例如:

给定数字10:3的倍数= {3; 6; 9} +余数= 1

给定数字11:3的倍数= {3; 6; 9} +余数= 2

到目前为止我的算法(但不是代码)是这样的:

  1. 检查X是否为3的倍数 - 是 - 返回倍数(无余数);
  2. 没有?是x-1是3的倍数 - 是 - 返回倍数(1个余数);
  3. 没有?是x-2是3的倍数 - 是 - 返回多个(剩余2个);

有没有更好的方法来做到这一点,使用更少的代码?

编辑:还有2件事情,我只想找3 - 所以这可能是一个常数.还有任何小于3:2,1和0的数字 - 我不介意为此提供额外的逻辑.

lep*_*pie 13

IEnumerable<int> Foo(int n, int k)
{
  int m = k;
  while (m <= n)
  {
    yield return m;
    m += k;
  }

  yield return m - n;
}
Run Code Online (Sandbox Code Playgroud)

  • 是的,这个答案似乎是最诚实的(在阅读了5次问题之后:x) (2认同)

Ode*_*ded 12

整数除法(/)和模数(%)是你的朋友:

var multiples = num / 3;
var remainder = num % 3;
Run Code Online (Sandbox Code Playgroud)

  • 考虑到你的问题的措辞,这让我很难过.我现在很困惑! (3认同)