【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;
}


运行结果:



相关文章
|
3月前
|
C语言
C语言之完数、素数、回文数合集
C语言之完数、素数、回文数合集
|
2月前
|
C语言
C语言初阶:如何判断是否为素数并且输出
C语言初阶:如何判断是否为素数并且输出
19 0
|
2月前
|
C语言
【C语言刷题每日一题】——打印100到200之间的素数
【C语言刷题每日一题】——打印100到200之间的素数
|
2月前
|
C语言 Windows
C语言素数的不同求法
C|素数的不同求法及在线测试比较
|
2月前
|
C语言
C语言----寻找100~999范围内的质数--素数
C语言----寻找100~999范围内的质数--素数
|
2月前
|
C语言
C语言---函数----100~n之间的素数
C语言---函数----100~n之间的素数
|
2月前
|
C语言
C语言----利用函数调用找某个范围内的素数。
C语言----利用函数调用找某个范围内的素数。
|
2月前
|
C语言
【C语言】输入一个正整数,判断其是否为素数
【C语言】输入一个正整数,判断其是否为素数
43 0
|
2月前
|
C语言
C语言如何判断素数及相关知识
C语言如何判断素数及相关知识
31 0
|
3月前
|
C语言 C++
C语言之素数
本文介绍了两种检查素数的方法。试除法是通过将一个数除以小于它的所有数,若有余数为0则非素数,如验证99(非素数)可被3整除。另一种是试除开平方法,非素数可拆为两数相乘,若其中一数大于其平方根,则该数为素数。示例代码提供了C++实现。
27 0