第四题:求素数

实验题目

查找100以内的最大素数

实验要求

  1. 查找素数:程序需要查找100以内的所有素数。
  2. 找到最大素数:在找到的所有素数中,确定最大的一个。

实验代码框架

// 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,则更新maxi
  • 输出结果printf("max = %d\n", max);,循环结束后,打印出找到的最大素数。