题目:写一个函数,判断一个数是否是素数
素数是指除了能被1和它本身整数外,不能被其他任何整数整除的数
我们常用的方法就是 :假设输入为k,判断k是否能够被2到根号k之间的数整除,如果能够,则说明不是素数,反之,则是素数
那为什么要 根据 k是否能够被2到根号k之间的数整除 来做判断,这背后的道理逻辑在哪里?
这是我接触C语言的第四年,前面三年我一直都没有弄清楚过,最近的一点感悟就是 多问问自己为什么
比如说 36 是素数 开方等于6
而 36=312 36=49 36=6*6
36如果写成两个数相乘的形式,一定有一个是<=根号36,有一个是>=根号36,所以只要判断从2-根号36就好了,根号36之后的数一直到36-1,都是对前面乘法的重复
此外,反证法:
设k=ab;
如果存在 a,b>根号k,
则ab>根号k*根号k=k,与已知矛盾,
所以 如果k有除了1和本身以外的其他因子,那一定也在1到根号k里面存在
C代码:
#include<stdio.h>
#include<math.h>
int sushu(int n);
void main()
{
int n;
scanf("%d",&n);
sushu(n);
}
int sushu(int n)
{
int i;
for(i=2;i<=sqrt(n);i++)
if(n%i==0)
{
printf("%d不是素数",n);
return 0;
}
printf("%d是素数",n);
}
运行结果:
反思:
编程往往会提出一些很好的思想,那这些思想背后为什么是这样呢?
已知三角形三条边求面积,用海伦公式,那海伦公式是怎么来的?
link.
我们要多问问为什么,把这套逻辑背后的来龙去脉弄清楚,这才是真正掌握了,也让我更好的理解了计算机与数学紧密相关
来源:CSDN
作者:芋頃
链接:https://blog.csdn.net/weixin_43217572/article/details/104727946