【C语言必刷题】4. 打印100~200之间的素数

简介: 【C语言必刷题】4. 打印100~200之间的素数

🔥 题目描述

使用C语言写一个程序打印100~200之间的的素数,数字中间使用空格分割。

🔥 解题思路


素数是指只能被1和它本身整除的正整数。我们可以遍历100~200,并找出那些数字是素数。

  1. 试除法:从 2x-1 ,逐个尝试是否能整除 x,如果能,x就不是素数,否则 x 是素数
    优化代码:当 x 为偶数时,x 一定不是素数,因此在遍历时我们可以跳过每个偶数


试除法时间优化:

1.png


🔥代码

#include <stdio.h>

int main()
{
    int i = 0;
    for (i = 100; i <= 200; i++) // 遍历100到200之间的每个数
    {
        int flg = 1; // flg用于标记是否为素数,初始假设为素数
        int j = 0;
        for (j = 2; j < i; j++) // 遍历2到i-1之间的每个数
        {
            if (i % j == 0) // 若i能被j整除,则i不是素数
            {
                flg = 0; // 修改flg标记为0,表示i不是素数
                break;    // 退出内层循环,无需继续判断
            }
        }

        if (flg != 0) // 若flg为1,表示i是素数
        {
            printf("%d ", i); // 输出素数i
        }
    }

    return 0;
}

// 优化1
#include <stdio.h>

int main()
{
    int i = 0;
    for (i = 101; i <= 200; i += 2) // 从101开始,每次增加2,遍历101到200之间的每个奇数
    {
        int flg = 1; // flg用于标记是否为素数,初始假设为素数
        int j = 0;
        for (j = 2; j < i; j++) // 遍历2到i-1之间的每个数
        {
            if (i % j == 0) // 若i能被j整除,则i不是素数
            {
                flg = 0; // 修改flg标记为0,表示i不是素数
                break;    // 退出内层循环,无需继续判断
            }
        }

        if (flg != 0) // 若flg为1,表示i是素数
        {
            printf("%d ", i); // 输出素数i
        }
    }

    return 0;
}

// 优化2
#include <stdio.h>
#include <math.h>

int main()
{
    int i = 0;
    for (i = 101; i <= 200; i += 2) // 从101开始,每次增加2,遍历101到200之间的每个奇数
    {
        int flg = 1; // flg用于标记是否为素数,初始假设为素数
        int j = 0;
        for (j = 2; j <= sqrt(i); j++) // 遍历2到sqrt(i)之间的每个数
        {
            if (i % j == 0) // 若i能被j整除,则i不是素数
            {
                flg = 0; // 修改flg标记为0,表示i不是素数
                break;    // 退出内层循环,无需继续判断
            }
        }

        if (flg != 0) // 若flg为1,表示i是素数
        {
            printf("%d ", i); // 输出素数i
        }
    }

    return 0;
}


运行结果:



相关文章
|
1月前
|
存储 算法 C语言
【C语言程序设计——函数】素数判定(头歌实践教学平台习题)【合集】
本内容介绍了编写一个判断素数的子函数的任务,涵盖循环控制与跳转语句、算术运算符(%)、以及素数的概念。任务要求在主函数中输入整数并输出是否为素数的信息。相关知识包括 `for` 和 `while` 循环、`break` 和 `continue` 语句、取余运算符 `%` 的使用及素数定义、分布规律和应用场景。编程要求根据提示补充代码,测试说明提供了输入输出示例,最后给出通关代码和测试结果。 任务核心:编写判断素数的子函数并在主函数中调用,涉及循环结构和条件判断。
62 23
|
8月前
|
C语言
C语言初阶:如何判断是否为素数并且输出
C语言初阶:如何判断是否为素数并且输出
57 0
|
8月前
|
C语言
【C语言刷题每日一题】——打印100到200之间的素数
【C语言刷题每日一题】——打印100到200之间的素数
|
8月前
|
C语言
C语言----寻找100~999范围内的质数--素数
C语言----寻找100~999范围内的质数--素数
|
8月前
|
C语言 Windows
C语言素数的不同求法
C|素数的不同求法及在线测试比较
|
8月前
|
C语言
C语言---函数----100~n之间的素数
C语言---函数----100~n之间的素数
|
8月前
|
C语言
C语言----利用函数调用找某个范围内的素数。
C语言----利用函数调用找某个范围内的素数。
|
8月前
|
C语言
【C语言】输入一个正整数,判断其是否为素数
【C语言】输入一个正整数,判断其是否为素数
190 0
|
8月前
|
C语言
C语言如何判断素数及相关知识
C语言如何判断素数及相关知识
132 0
|
9月前
|
C语言
【C语言必刷题】6. 水仙花数
【C语言必刷题】6. 水仙花数