给定正整数N。任务是编写一个C程序以检查数字是否为质数。
定义:
A prime number is a natural number greater than 1 that has no positive divisors other than 1 and itself. The first few prime numbers are {2, 3, 5, 7, 11, ….}
解决此问题的想法是使用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基础课程》。