相关疑难解决方法(0)

Lisp - 无论如何执行“何时”条件?

我正在定义一个函数来测试一个数字是否为素数,并且我有一个有效的算法(在 Python 中)并且我已经将它的大部分移植到 Lisp。然而,问题是我的素性测试即使在不应该通过的情况下也一直通过。例如,isPrime(13)仍然达到return NIL即使它应该失败的when条件。

(defun isPrime(n)
    (cond 
        ((< n 2); numbers less than 2 aren't prime
            NIL
        )
        ((equal n 2); 2 is the only even prime
            T
        )
        ((equal (rem n 2) 0); Even numbers are never prime (besides 2)
            NIL
        )
        ((> n 2)
            (loop for i from 2 to n do(
                    when(equal (rem n i) 0);If n is evenly divisible by i, we have found a factor other than 1 …
Run Code Online (Sandbox Code Playgroud)

lisp primes common-lisp conditional-statements

2
推荐指数
1
解决办法
114
查看次数

为什么我们可以在找到素数时使用sqrt(n)而不是n/2作为上限?

我们如何使用sqrt(n)而不是n/2代码?使用是否正确sqrt(n)

    static boolean isPrime(long n)
{
    if(n<=1) return false;
    double limit = Math.sqrt(n);
    for(long i = 2; i <= limit; i++)
    {
        if(n%i==0) return false;
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

java algorithm math

0
推荐指数
1
解决办法
1211
查看次数

为什么我们要检查 i &lt;= sqrt(n) 来判断一个数是否是质数?

我知道这个问题之前已经被回答过,但我不太明白对该问题的解释。

我在 HackerRank 上做了 30 天的代码,其中一个练习是检查一个数字是否是素数。不幸的是,我自己无法做到这一点,所以我在多次尝试后检查了给定的解决方案。即使在查看了解决方案之后,我也无法理解其中一行:

// Check for primality using odd numbers from 3 to sqrt(n)
for(int i = 3; i <= sqrt(n); i += 2){
    // n is not prime if it is evenly divisible by some 'i' in this range
    if( n % i == 0 ){ 
        isPrime = false;
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么sqrt(n)for循环中使用?

primes primality-test

0
推荐指数
1
解决办法
1829
查看次数

为什么我们不能在python的for循环中传递范围内的算术表达式

我收到一个错误,因为“浮动”对象不能解释为整数

num=5
for x in range(num/2):
     print("hello")
Run Code Online (Sandbox Code Playgroud)

python range python-3.x

0
推荐指数
1
解决办法
159
查看次数

检查一个数字是否为素数?

我正在尝试创建一个应用程序来检查数字是否为素数.

有人可以帮我查一下这个号码吗?

我需要一个简单的答案,而不是非常先进的算法.我是编程新手.

swift

-3
推荐指数
3
解决办法
3万
查看次数

质数逻辑,循环中的 n/2 条件

以下代码用于质数。我想知道为什么我们i<=n/2在循环中使用条件。

C程序:

#include <stdio.h>
int main()
{
int n, i, flag = 0;

printf("Enter a positive integer: ");
scanf("%d",&n);

for(i=2; i<=n/2; ++i)
{
    // condition for nonprime number
    if(n%i==0)
    {
        flag=1;
        break;
    }
}

if (flag==0)
    printf("%d is a prime number.",n);
else
    printf("%d is not a prime number.",n);

return 0;
}
Run Code Online (Sandbox Code Playgroud)

c primes primality-test

-6
推荐指数
1
解决办法
9286
查看次数