一、素数的定义
素数又叫质数(prime number),有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。
二、代码实现
1.主函数构建
int main() { int n = 0; int count = 0; printf("请输入一个整数n:"); scanf("%d", &n); printf("从%d到%d的范围内所有的素数:\n", n, n + 100); for (int i = n; i <= n + 100; i++) { if (judgment(i)) //自定义函数判断i是否为素数 { printf("%d ", i); count++; } } printf("\n素数的个数为:%d", count); return 0; }
2. 如何判断素数
定义一个函数,利用函数来判断是否为素数
函数创建 int judgment(int num) { if (num < 2) { return 0; } for (int i = 2; i * i <= num; i++) if (num % i == 0) { return 0; } } return 1; }
for循环,用于判断一个数num
是否为素数。循环变量i
从2开始,每次递增1,直到i * i > num
为止。
为什么只需要检查到i * i <= num
呢?因为如果num
不是素数,那么它一定可以表示为两个自然数的乘积,即num = a * b
。假设a <= b
,那么a * a <= a * b = num
,因此只需要检查到i * i <= num
即可。如果在这个范围内没有找到能整除num
的数,那么num
就是素数。
循环中,每次判断num
是否能被i
整除,如果能被整除,说明num
不是素数,直接返回0(循环结束,0值使主函数中的判断跳过)。如果不能被整除,继续循环,直到i * i > num
为止。如果循环结束都没有找到能整除num
的数,说明num
是素数,返回1(主函数中打印该素数)。
三、整体代码
#include <stdio.h> int judgment(int num) { if (num < 2) { return 0; } for (int i = 2; i * i <= num; i++) { if (num % i == 0) { return 0; } } return 1; } int main() { int n = 0; int count = 0; printf("请输入一个整数n:"); scanf("%d", &n); printf("从%d到%d的范围内所有的素数:\n", n, n + 100); for (int i = n; i <= n + 100; i++) { if (judgment(i)) { printf("%d ", i); count++; } } printf("\n素数的个数为:%d", count); return 0; }