素数(prime)又称 质数。一个大于1的 自然数,除了1和它自身外,不能被其他自然数 整除的数叫做质数;否则称为 合数(规定1既不是质数也不是合数)。
闲话少叙,直接看完整代码
#include<stdio.h>
#include<math.h>
int main()
{
int n = 0, i = 0;//初始化变量
printf("please input number to judge\n");
scanf("%d", &n);
int q = sqrt(n);//sqrt是开平方函数
if (n > 0)
{
for (i = 2; i <= q; i++)
{
if (n % i == 0)
{
break;
}
}
if (i > q)//除数本身外最大因数不会超过它的开平方数
{
printf("%d is a prime number\n",n);//当n为素数时输出该语句
}
else
{
printf("%d is not a prime number\n",n);//当n不是素数时输出该语句
}
}
else
printf("error data");//当n为负数时提示输入数据错误
return 0;
}
在刚接触编程做老师的复习题时自己看到完整的源代码也是云里雾里,接下来详细给大家介绍一下这种判断素数的思路。
由前面对于素数的介绍我们知道,素数就是除了1和它本身之外再没其他的因数,因此对于任意比2大的整数只要我们从2--n-1对它不断取余,判断2--n-1之间是否有他的因子,便能够判断它是否为素数了。
用C语言表示出来应该是
for (i = 2; i <= n-1; i++)
但朋友们肯定发现了文章开始的代码里使用的是开平方函数sqrt(n)作为判断条件,一个数除掉它自身外最大的因数便是它的开平方数,所以只需要判断2--sqrt(n)之间的数就可以了,好处就是这一判断方式可以减少一部分的计算量。
感谢各位的阅读,对于像我一样大学才第一次接触到编程的人来说开始是十分困难的,但不论什么原因既然自己已经选择了这条道路,就应该以绝对认真的态度去对待它,不要害怕尝试,不要害怕失败,网上冲完浪后多去敲敲代码,亲自动手实践。
我是励志成为编程老师的希望能给各位大学刚接触编程的同学带来一点点帮助。
如有问题,请多多斧正,感恩!✊
希望能和大家再评论区多多交流