📜  C程序检查数字是否为质数

📅  最后修改于: 2021-05-28 04:31:39             🧑  作者: Mango

给定正整数N。任务是编写一个C程序以检查数字是否为质数

定义

解决此问题的想法是使用for循环遍历从2到sqrt(N)的所有数字,并检查每个数字是否除以N。如果发现任何被除的数字,则返回false。如果我们在2和sqrt(N)之间找不到除以N的任何数字,则意味着N为质数,我们将返回True。
我们为什么选择sqrt(N)?
原因是数的最小且大于1的倍数不能超过N的平方根。一旦找到一个因数,我们便停下来。例如,如果N为49,则最小因子为7。对于15,最小因子为3。
下面是检查数字是否为质数的C程序:

C
// C program to check if a
// number is prime
 
#include 
#include 
int main()
{
    int n, i, flag = 1;
 
    // Ask user for input
    printf("Enter a number: \n");
 
    // Store input number in a variable
    scanf("%d", &n);
 
    // Iterate from 2 to sqrt(n)
    for (i = 2; i <= sqrt(n); i++) {
 
        // If n is divisible by any number between
        // 2 and n/2, it is not prime
        if (n % i == 0) {
            flag = 0;
            break;
        }
    }
 
    if (n <= 1)
        flag = 0;
 
    if (flag == 1) {
        printf("%d is a prime number", n);
    }
    else {
        printf("%d is not a prime number", n);
    }
 
    return 0;
}


输出

Enter a number: 11
11 is a prime number

时间复杂度: O(n 1/2 )

辅助空间: O(1)

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。