第十四弹--打印1-100之间的素数

简介: 第十四弹--打印1-100之间的素数

实现C语言打印1-100之间的素数

定义:质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

方法一 试除法

依次遍历 挑选出符合条件的数字打印

1.创建一个嵌套循环,实现遍历

int i = 0, j = 0;
for (i = 2; i <= 100; i++)
{
  for (j = 2; j <= i; j++)
  {
  }
}

2.设定条件

if (i % j == 0)//如果被数整除就结束本次循环
{
  break;
}
if (i == j)//结束内层循环后 判断i 是否相等 相等证明是素数
{
  printf("%d ",i);
}

完整代码实现

#include <stdio.h>
int main()
{
  int i = 0, j = 0;
  for (i = 2; i <= 100; i++)
  {
    for (j = 2; j <= i; j++)
    {
      if (i % j == 0)
      {
        break;
      }
    }
    if (i == j)
    {
      printf("%d ",i);
    }
  }
  return 0;
}

去偶数法

已知在1-100之内偶数永远不可能是素数 所以每次i可以跳过偶数

1.如上创建嵌套循环 不过此处进行一个小优化 把判断条件使用一个flag数进行判断

int i = 0,j = 0;
printf("2 ");
for (i = 3; i <= 100; i += 2)
{
  int flag = 1;//注意 需要把flag放在外层循环内 因为如果非素数的话会导致flag为0 需要每次进行重置
  for (j = 2; j < i; j++)
  {
  }
}

2.符合条件进行打印 需要注意的是直接去除偶数的话 会缺少了一个2 需要补上

if (i % j == 0)
{
  flag = 0;//在内层循环中 j要小于i 不能等于 否则i%j==0 flag恒为0
  break;
}
if (flag == 1)
{
  printf("%d ",i);
}

完整代码实现

#include <stdio.h>
int main()
{
  int i = 0,j = 0;
  printf("2 ");
  for (i = 3; i <= 100; i += 2)
  {
    int flag = 1;
    for (j = 2; j < i; j++)
    {
      if (i % j == 0)
      {
        flag = 0;
        break;
      }
    }
    if (flag == 1)
    {
      printf("%d ",i);
    }
  }
  return 0;
}

sqrt()函数法

在sqrt开方下会产生两个数 一个数如果为非素数的话 那么它肯定依然可以取模。这样子循环只要一半 提高了效率。

#include <stdio.h>
#include <math.h>
int main()
{
  int flag = 0;
  for (int i = 2; i <= 100; i++)
  {
    flag = 1;
    for (int j = 2; j <= sqrt(i); j++)
    {
      if (i % j == 0)
      {
        flag = 0;
        break;
      }
    }
    if (flag == 1)
    {
      printf("%d ",i);
    }
  }
  return 0;
}

注 在三种方法条件下 可以结合使用 提高效率,例如方法2+方法3 跳过偶数和开方 能减少更多的循环次数。

相关文章
|
编解码 测试技术 异构计算
预测一下,GPT-5 会在什么时候发布,又会有哪些更新?
GPT-5预告11月发布,或与ChatGPT两周年同庆。谷歌Gemini与GPT-4 turbo竞争激烈。GPT-5或分阶段推出,训练加安全测试耗时9个月。GPT-4拥有1.8万亿参数,120层结构,训练成本6300万,专为多模态设计,加强推理性能。GPT-5预期参数增10倍,强化多模态及推理能力,支持图像、音频和视频处理。[个人主页的个人介绍内容](https://developer.aliyun.com/profile/oesouji3mdrog/highScore_1?spm=a2c6h.13262185.profile.6.56644d0depOAIS)
407 3
预测一下,GPT-5 会在什么时候发布,又会有哪些更新?
|
存储 网络虚拟化 虚拟化
关于NFV的基础知识
【2月更文挑战第15天】NFV是一种网络架构,它是基于虚拟化技术将网络功能节点虚拟化为可链接在一起提供通信服务的功能模块。
|
算法 IDE 开发工具
火爆全网开源额温枪同平台之华大HC32L136 SDK开发入门
火爆全网开源额温枪同平台之华大HC32L136 SDK开发入门
445 1
|
存储
wsl的存储路径
wsl的存储路径
|
缓存 安全 Linux
Linux 设备驱动程序(一)((下)
Linux 设备驱动程序(一)
150 3
|
11月前
|
Ubuntu 应用服务中间件 Linux
Linux下搭建Nginx环境的搭建
Linux下搭建Nginx环境的搭建
179 6
|
网络协议 安全 Windows
【bat】批处理脚本大全
【bat】批处理脚本大全
425 2
|
Web App开发 传感器 Linux
【嵌入式软件工程师面经】STM32单片机
【嵌入式软件工程师面经】STM32单片机
430 1
|
存储 机器学习/深度学习 安全
云计算与网络安全的融合之路:策略、挑战与未来展望
【5月更文挑战第13天】 随着数字化转型的不断深入,云计算已成为企业及个人存储和处理数据的首选平台。然而,云服务的广泛使用也引入了新的安全风险和挑战,尤其是在数据保护、隐私和合规性方面。本文探讨了云计算环境下网络安全的现状,分析了当前面临的主要安全威胁,并提出了相应的防护措施。同时,文中还讨论了如何通过采用创新的安全技术和策略来加强云计算的安全性,以及在不断变化的网络威胁环境中保持弹性的必要性。最后,文章对未来云计算和网络安全的发展趋势进行了展望,指出了实现更安全云计算环境的潜在途径。
|
存储 人工智能 算法
程序与技术分享:7z命令行压缩解压详解
程序与技术分享:7z命令行压缩解压详解