随机存取机器(RAM)-测试无平方n

时间:2018-07-09 15:43:17

标签: complexity-theory

我正在使用模拟器编写一个随机访问机器(RAM),该模拟器测试给定的自然数是否为无平方数。我的目标是分析其复杂性。

在高级方面,我将使用以下测试功能

def isSquareFree(n):

    if n % 2 == 0:
        n = n / 2

    if n % 2 == 0:
        return False

    for i in range(3, int(sqrt(n) + 1)):
        if n % i == 0:
            n = n / i

        if n % i == 0:
            return False

return True

我的问题是,我不确定如何使用RAM命令计算n的平方根,并且无法在线找到太多资源。因此,我正在重新考虑这是否真的是正确的方法。

有什么其他方法可以测试自然数是否无平方,可以使用RAM来实现?

谢谢。

1 个答案:

答案 0 :(得分:0)

如果只想避免在代码中使用sqrt,则只需测试i*i<=n。无论如何,这可能是一个好主意,因为计算平方根非常困难。

因此,我将您的代码更改为:

def isSquareFree(n):
    i=2   
    while i*i <= n:
        if n % i == 0:
            n = n / i

        if n % i == 0:
            return False
        
        i = i+1

    return True

以上内容仅使用了原子操作,因此希望对您有所帮助。但是我不熟悉RAM编程,因此不确定是否能解决您的问题。