Time complexity 为什么模运算的时间复杂度是常数?

Time complexity 为什么模运算的时间复杂度是常数?,time-complexity,Time Complexity,我正在破解编码面试,我不确定时间复杂性的例子。它们提供以下代码来确定数字是否为素数: boolean isPrime(int n) { for (int x = 2; x * x <= n; x++) { if (n % x == 0) { return false; } } return true; } 布尔isPrime(int n){ 对于(int x=2;x*x语句的关键部分在for循环内部。发生的一

我正在破解编码面试,我不确定时间复杂性的例子。它们提供以下代码来确定数字是否为素数:

boolean isPrime(int n) {
    for (int x = 2; x * x <= n; x++) {
        if (n % x == 0) {
            return false;
        }
    }
    return true;
}
布尔isPrime(int n){

对于(int x=2;x*x语句的关键部分在for循环内部。发生的一切都是模运算。在函数本身内部,时间复杂度取决于n

为什么模运算的时间复杂度n%x独立于n?10^10%7与10%7占用的时间相同吗?模运算是一个相当长的l由寄存器()执行的低级别操作。在64位系统中,寄存器的宽度为64位。由于此处的参数为int(最有可能为32位),因此该操作将对寄存器中的所有位执行,而不管它们的值(0或1)。此外,10^10(1000000000)太大,无法装入整数(最大值为2147483647)我想我明白了。我不会考虑硬件的时间复杂性问题。(现在我更好地理解了为什么乘法/加法也被认为是常数时间运算。)谢谢!