素数又叫质数(prime number),有无限个。质数定义为在大于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;
}
定义一个函数,利用函数来判断是否为素数
函数创建
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;
}