我有一个非常大的说'x'(10 ^ 18)和一个数字'z'说6。 我试图用c代码知道/计算1到x(10 ^ 18)范围内有多少个数字可以被z整除。 因为我正在使用一个简单的循环
While(x)
{
if(x % z == 0)
{
count++;
}
--x;
}
但是这段代码花费了太多时间,因为它检查从1到x的所有值。 是否有任何已知的算法或技术,我可以优化上述代码,仍然得到相同的结果。 非常感谢你的帮助。
答案 0 :(得分:7)
count = floor(x / z);
显然,您需要一个足以容纳x
的数据类型。