素数的定义:
大于1的自然数,除了1和他本身不再有其它的因数
数学原理:
假设一个num不是素数,必然存在一个因子,该因为一定<=√num,因此只要检测到√num中是否存在因子即可。
代码如下:
#include <stdio.h>
#include <math.h>
int is_prime(int num)
{
if (num < 2) return 0; // 0和1不是素数
for (int i = 2; i * i <= num; i++)
{ // 只需检查到sqrt(num)
if (num % i == 0) return 0; // 被整除说明不是素数
}
return 1; // 是素数
}
int main()
{
printf("100到200之间的素数有:\n");
for (int i = 100; i <= 200; i++)
{
if (is_prime(i))
{
printf("%d ", i);
}
}
printf("\n");
return 0;
}
程序运行:
这是函数内部,也就是判断素数的程序
通过is_prime(i)进行函数的调用,把实参i的值给的形参num
假设;i=100,把i的值赋值给num,此时num=100;
然后进入函数内部,进入到for循环,此时i变成2,
只要满足
就会一直循环(i的值一直变化),直到不满足上述条件为止,如果找不到因子,则为素数
若找到因子,则不是素数
函数内部return1和return0的作用:
如果写成这样
写成这样会导致程序误判,因为它会一直循环直到i==num,此时num%i == 0;不满足素数
则会return0,从而实现不了打印素数的程序
结语:限于水平,本篇文章不足之处在所难免,如发现错误可以指正下,谢谢大家,
你的支持是我前进的最大动力
xiaxia