首页 > 其他分享 >c语言素数(升级版)

c语言素数(升级版)

时间:2024-12-14 23:00:50浏览次数:6  
标签:遍历 语言 判断 int flag 素数 循环 升级版

回顾

还记得素数判断吗?这里面有一个问题,我们只能判断素数,但是无法在一个范围内找出所有素数。今天我们就来借助相关例题讲解一下双层循环实现素数找出。

例题

本关任务:输入正整数 n,输出 n 以内的全部素数,并输出 n 以内所有素数个数。

分析

首先我们需要一个循环,遍历从2(1和小于一的直接排除)到n的所有整数,紧接着又需要素数判断的循环,这里就可以把上次的函数稍作修改拿来用,但是判断素数的函数括号里的量是一个变化的量,是遍历的量。

还是依旧可以标点法,但是标点法对flag在第一层循环要有重置的过程,否则当一个数不是素数,flag=0,然后就一直为0,遍历到下一个数尽管可能是素数,但因为flag没有重置为1,会导致也不输出(不会判定该数为素数)。(也是非常容易出bug的一点,真的很容易忘掉这个细节)

答案

#include<stdio.h>
int main()
{
    int m,i,n=0,num=0;
    int flag=1;
    scanf("%d",&n);
    for(m=2;m<=n;m++)
    {
        flag=1;//一定要在循环中重置flag=1,否则flag为0后素数也被输出为不是素数而筛掉
        for(i=2;i<m;i++)//<m与<=m-1等价
        {
            if(m%i==0)
            {
                flag=0;
                break;
            }
        }
        if(flag==1)
        {
            printf("%d ",m);//打印出该素数
            num++;
        }
    }
    printf("\n%d以内共有%d个素数\n",n,num);
    return 0;
}

方法总结

看到一个比较复杂的题,要学会分解拆分任务,这道题就是,首先我们要遍历2到n的数,其次是对每一个遍历到的数找素数处理,就还可以使用上次的方法,不过判断的数是个变化的,是在一个遍历循环里面的,因此出现双层循环,肯定是拆分任务。(拆分任务也是未来搞复杂工程的基本能力)

以上均是本人自己的理解,有什么不对的欢迎各位大佬指出~

标签:遍历,语言,判断,int,flag,素数,循环,升级版
From: https://blog.csdn.net/dyudbegdu/article/details/144477510

相关文章

  • 本文针对c语言初学者总是出bug的萌新
    有编译器反馈的读反馈这里来解释一下,方便大家理解编译器输出:        Infunction'main':        13:43:error:expected';'before'scanf'    printf("Enternumberandidfors2:")                 ......
  • 用C语言输出 -- 斐波那契
    首先,你要明白什么是斐波那契数列:斐波那契数列是指这样一个数列:1,1,2,3,5,8,13,21,34,55,89……这个数列从第3项开始,每一项都等于前两项之和。源代码如下:#include<stdio.h>intmain(){ inti,n,a=1,b=1,c; printf("输入显示个数\n"); scanf("%d",&n); for(i=1;i<=n;......
  • 新手学习C语言打卡8(数组)
    数组:数组:是一种容器,可以用来存储同种类数据类型的多个值数组的本质是地址数组的定义:数据类型数组名[长度]eg:intarr=[3];                   特点1.连续的空间特点2.一旦定义,长度不可变数组的初始化:数据类型数组名[长度]={数据值,数据值...}......
  • 2024-12-14:K 周期字符串需要的最少操作次数。用go语言,给定一个长度为n的字符串 word
    2024-12-14:K周期字符串需要的最少操作次数。用go语言,给定一个长度为n的字符串word和一个整数k,k是n的因数。每次操作可以选择两个下标i和j,使得i和j都可以被k整除,然后用从j开始的长度为k的子串替换从i开始的长度为k的子串。要使得word成为一个K周期字符串,需要进行最少的操作次数......
  • arXiv-2024 | 具身智能体要上天!CITYNAV:基于地理信息的无人机视觉语言导航数据集
    作者:JungdaeLee,TaikiMiyanishi,ShuheiKurita,KoyaSakamoto,DaichiAzuma,YutakaMatsuo,NakamasaInoue单位:东京科学,东京大学,NII,ATR,京都大学AIP,京都大学,索尼半导体解决方案原文链接:CITYNAV:LANGUAGE-GOALAERIALNAVIGATIONDATASETWITHGEOGRAPHICINFORM......
  • WIDECHAR 是 Windows 操作系统中用于表示和处理 Unicode 字符的一个概念,通常涉及到支
    WIDECHAR是WindowsAPI中用于处理宽字符(widecharacter)的一种类型,通常表示使用Unicode字符编码的字符。在Windows操作系统中,字符可以分为两种类型:ASCII字符:即单字节字符,每个字符用一个字节(8位)表示,能表示128个字符(包括标准英语字符、数字和一些符号)。宽字符:即宽字节字......
  • C语言:控制台扫雷游戏的实现(递归实现雷的排查)
    废话少说,直接上主思路代码一,主思路代码​intmain(){ intinput=0; do { menu(); printf("请输入选择:\n"); scanf("%d",&input); switch(input) { case1: game(); break; case0: break; } }while(input); return0;}​二......
  • c语言实现交换法排序
    文章目录介绍思路代码实现结果介绍交换法排序是将每一位数与其后的所有数一一比较,如果发现符合条件的数据则交换数据。思路具体实现如表格,从表格中可以发现,在第一轮交换排序过程中,先将10和7比较,进行调换(按从小到大排);然后进行7和16的比较,这次则保持;然后进行7和5的比......
  • 人工智能大语言模型起源篇(二),从通用语言微调到驾驭LLM
    上一篇:《人工智能大语言模型起源篇(一),从哪里开始》(5)Howard和Ruder于2018年发表的《UniversalLanguageModelFine-tuningforTextClassification》,https://arxiv.org/abs/1801.06146这篇论文从历史的角度来看非常有意思。尽管它是在原始的《AttentionIsAllYouNeed......
  • 清华大学出品的《自然语言处理:原理、方法与应用》硬核书 |含PDF
    前言人工智能自然语言处理领域的发展也经历了很多大事件,有预测蛋白质结构的alphafold模型、有1750亿参数量的超大无比GPT3屠榜自然语言处理各个任务的榜单,也有实现增量推理与分布式推理的盘古预训练模型。总体来讲,自2018年底谷歌公司发布BERT预训练模型后,自然语言处理领域......