用双重C++测试可分性

Tom*_*eit 3 c++ double arithmetic-expressions factorial

((num / i) % 1 == 0)当num是double时,为什么不能在C++中工作?我将如何编写此代码,通过检查是否留下余数(等等0.3333)来检查因子.

int getFactorials (double num)
{
    int total = 0;      // if (total / 2) is equal too 'num' it is a perfect number.

    for (int i = 1; i < num; i++)
    {
        if ((num / i) % 1 == 0)
        {
            cout << i << endl;
        }
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Jam*_*nze 7

%操作者只被允许在整体的类型(和用户定义的过载它类型).对于浮点,您需要该功能 fmod.


ale*_*nis 5

实际上你想要做的是检查是否可n被整除,i所以你需要改变的是

if ((num / i) % 1 == 0)
Run Code Online (Sandbox Code Playgroud)

if (num % i == 0) 
Run Code Online (Sandbox Code Playgroud)

您应该知道这很容易出错,因为您正在使用它double作为类型num.你应该用一个int代替.

  • @TomLilletveit`%`运算符为你提供了`i`除以'n`除以**的余数**,所以如果`i`除以`n`它将给你零. (2认同)