优化代码(检查mod == 0是否为10 ^ 18)

时间:2012-04-06 17:42:54

标签: c algorithm optimization

我有一个非常大的说'x'(10 ^ 18)和一个数字'z'说6。 我试图用c代码知道/计算1到x(10 ^ 18)范围内有多少个数字可以被z整除。 因为我正在使用一个简单的循环

While(x)
{
    if(x % z == 0)
       {
          count++;
        }
     --x;
  }

但是这段代码花费了太多时间,因为它检查从1到x的所有值。 是否有任何已知的算法或技术,我可以优化上述代码,仍然得到相同的结果。 非常感谢你的帮助。

1 个答案:

答案 0 :(得分:7)

count = floor(x / z);

显然,您需要一个足以容纳x的数据类型。