写一个判别素数的函数附带解释(素数的数学定理和公式)

写一个判别素数的函数附带解释(素数的数学定理和公式)

首页维修大全综合更新时间:2025-09-19 17:47:15

写一个判别素数的函数附带解释

素数是指在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的自然数。

以下是一个用 Python 编写的判别素数的函数:

 

def is_prime(n):

    if n <= 1:

        return False

    if n <= 3:

        return True

    if n % 2 == 0 or n % 3 == 0:

        return False

    i = 5

    while i * i <= n:

        if n % i == 0 or n % (i + 2) == 0:

            return False

        i += 6

    return True

 

这个函数首先检查输入的数字是否小于等于 1,如果是,则返回 False,因为 1 和它本身以外不再有其他因数的自然数不可能是 1 或者更小的数。

然后,函数检查输入的数字是否小于等于 3,如果是,则返回 True,因为 2 和 3 都是素数。

接下来,函数检查输入的数字是否可以被 2 或者 3 整除,如果可以,则返回 False,因为除了 1 和它本身以外不再有其他因数的自然数不可能被 2 或者 3 整除。

然后,函数使用一个循环来检查输入的数字是否可以被其他奇数整除。循环从 5 开始,每次增加 6,直到 i 的平方大于 n。在每次循环中,如果 n 可以被 i 或者 i+2 整除,则返回 False,因为除了 1 和它本身以外不再有其他因数的自然数不可能被其他奇数整除。

最后,如果循环结束后仍然没有找到其他因数,则返回 True,即输入的数字是素数。

这里用C语言写一个

int main(){

int flag = 0; //是否素数标记

int num = 0; // 待判断的整数

printf("输入一个大于0的整数:");

scanf("%d",&num);

if(num<1)

{

printf("你输入的数不符合要求。 ");

return 0;

}

for(int i=2;i<=num/2;i++){

if(num % i==0){

flag = 1; // 如果该数能被2和以及小于等于它一半的数整除,就不是素数。

}

}

if(flag == 0){

printf("%d是素数。 ", num);

}else{

printf("%d不是素数。 ", num);

}

return 0;

}

大家还看了
也许喜欢
更多栏目

© 2021 3dmxku.com,All Rights Reserved.