Math 编写并求解此素数计数算法的递归?

Math 编写并求解此素数计数算法的递归?,math,big-o,computer-science,recurrence,Math,Big O,Computer Science,Recurrence,我在准备考试,我遇到了一个问题,我对这门课不太在行,我完全被它难住了。我真的非常感谢你的帮助 假设您可以访问实时运行的算法isprime(n) O(n)(比如说,一个蛮力检查所有数字的可除性) 而不是n)。以下代码计算的素数小于 或等于其输入参数 boolean numprimes(int n) { if (n == 1) { return 0; } else if (isprime(n)) { return numprimes(n − 1) +

我在准备考试,我遇到了一个问题,我对这门课不太在行,我完全被它难住了。我真的非常感谢你的帮助

假设您可以访问实时运行的算法isprime(n) O(n)(比如说,一个蛮力检查所有数字的可除性) 而不是n)。以下代码计算的素数小于 或等于其输入参数

boolean numprimes(int n) {
    if (n == 1) {
        return 0;
    } else if (isprime(n)) {
        return numprimes(n − 1) + 1;
    } else {
        return numprimes(n − 1);
    }
}
目标是分析num primes的运行时。通过以下方式实现此目标: 执行以下操作:

(a) 为T(n)的运行时间编写一个递归定义 一个大小为n的实例上的算法

(b) 求解递归定义 对T(n)进行迭代,用迭代法得到一个封闭形式 替换,猜测,通过归纳证明猜测,以及 最后根据你的猜测推断出一个封闭的。或者,你 可以使用重复替换来猜测封闭形式,并证明 通过归纳法纠正的封闭形式

非常感谢,我将非常感谢任何帮助

a)由于素数测试是在O(n)时间内进行的,因此重复性将是

T(n) = T(n-1) + O(n)

b) 解决了a部分后,剩下的就足够简单了。如果您向我展示您为解决此问题所做的工作,我可以为您提供更多帮助。

作为提示,以下是重复出现的情况:

T(1)=1

T(n)=T(n-1)+O(n)

这是因为总是有一个递归调用(在大小为
n-1
的输入上),并且每个单独的调用都不起作用

如果你把它改写成

T(1)≤ 一,

T(n)≤ T(n-1)+kn

您可以开始迭代。作为提示,最终结果应该是O(n2);我把细节留给你

希望这有帮助