第四题:求素数
实验题目
查找100以内的最大素数
实验要求
- 查找素数:程序需要查找100以内的所有素数。
- 找到最大素数:在找到的所有素数中,确定最大的一个。
实验代码框架
// 04_prime_number.c
#include <stdio.h>
#include <math.h>
//查找100以内的最大素数
int main(void)
{
int i, j;
int max = 0;
for (i = 1; i <= 100; i++)
{
//TODO
}
printf("max = %d\n", max);
return 0;
}
实验解析
代码实现
#include <stdio.h>
#include <math.h>
int main(void)
{
int i, j;
int max = 0;
for (i = 1; i <= 100; i++)
{
// 检查i是否为素数
int isPrime = 1; // 假设i是素数
for (j = 2; j <= sqrt(i); j++)
{
if (i % j == 0)
{
isPrime = 0; // i不是素数
break;
}
}
// 如果i是素数且大于当前的最大素数,更新max
if (isPrime && i > max)
{
max = i;
}
}
printf("max = %d\n", max);
return 0;
}
代码解释
- 外层循环:
for (i = 1; i <= 100; i++)
,这个循环遍历1到100之间的所有数字。 - 内层循环:
for (j = 2; j <= sqrt(i); j++)
,这个循环用于检查当前的i
是否为素数。内层循环从2开始,到sqrt(i)
结束,因为一个数如果可以被小于或等于其平方根的数整除,那么它就不是素数。 - 检查素数:
if (i % j == 0)
,如果i
能被j
整除,则i
不是素数,将isPrime
设置为0,并跳出内层循环。 - 更新最大素数:
if (isPrime && i > max)
,如果i
是素数且大于当前的最大素数max
,则更新max
为i
。 - 输出结果:
printf("max = %d\n", max);
,循环结束后,打印出找到的最大素数。