7.给出一个大于或等于3的正整数,判断它是不是一个素数。
解题思路:
首先我们要了解素数的概念,素数:也叫做 “质数”,是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数,也就是不能再整除其他数。
判断素数的方法:这里采用试除法(将输入的数n与从2到n - 1的数取模,若没有模为零的情况,则代表n是素数)
#include<stdio.h>
int main()
{
int n = 0;
int i = 0;
printf("请输入一个大于3的正整数:>>\n");
scanf("%d", &n);
for (i = 2; i < n; i++)
{
if (0 == (n % i))
break;
}
if (i == n)
printf("%d不是素数\n", n);
else
printf("%d是素数\n", n);
return 0;
}
结果展示:
虽然我们成功的判断了一个数是否为素数,但是判断的方法效率比较低,考虑到若n不为素数,那么一定存在n = a * b ,且a,b不为1和n 也就是说在1 - n之间肯定存在n的因数,a或b因数之间的一个肯定小于等于 开平方n
所以我们的判断条件可以从n - 1 缩小到√(“n”) 这个范围 具体代码如下:
#include<stdio.h>
int main()
{
int n = 0;
int i = 0;
printf("请输入一个大于3的正整数:>>\n");
scanf("%d", &n);
for (i = 2; i <= sqrt(n); i++)//sqrt()函数为开平方函数,头文件为math.h
{
if (0 == (n % i))
break;
}
if (i > sqrt(n))//判断条件也需要相应的调整
printf("%d是不素数\n", n);
else
printf("%d是素数\n", n);
return 0;
}