当前位置: 首页 > article >正文

团体程序设计天梯赛-练习集——L1-028 判断素数

前言

一道10分的题目,相对来说比较简单,思考的时候要仔细且活跃,有时候在写代码的时候一些代码的出现很多余,并且会影响最后的结果

L1-028 判断素数

本题的目标很简单,就是判断一个给定的正整数是否素数。

输入格式:

输入在第一行给出一个正整数N(≤ 10),随后N行,每行给出一个小于2
31次方的需要判断的正整数。

输出格式:

对每个需要判断的正整数,如果它是素数,则在一行中输出Yes,否则输出No

输入样例:

2
11
111

输出样例:

Yes
No

好了,以上的题目就到这里,这道题给人的第一感觉就是很简单,确实,这道题没什么难度
我做题的过程中,刚看到题就有了思路,先搞一个变量,存储输入的数字数量,然后再搞两个数组,注意了,这里我首先想到的是数组,一个用于存储输入的数字,另一个用于存储这个数字是否是素数,这里是因为我不喜欢再一个for里面写很多东西,所以我下意识的定义了两个数组为了再写一个for输出好使,但是,看哈,我的写法的话,一个for用来输入数字,一个用来判断是否是素数,还有一个输出结果,我靠,这样真的太鸡肋了,但是代码能跑能输出,看一下代码先

代码1

#include <stdio.h>
#include <math.h>
int main()
{
    int n;
    scanf("%d",&n);
    int num[n];
    int count[n];
    int i = 0,j = 0;
    for(i = 0; i < n;i++)
    {
        scanf("%d",&num[i]);
        count[i] = 0;
        if(num[i] == 1)count[i] = 1;
        for(j = 2;j <= sqrt(num[i]);j++)
        {
            if(num[i] % j == 0){count[i] = 1;break;}
        }
    }
    for(i = 0; i < n;i++)
    {
        if(count[i])printf("No\n");
        else printf("Yes\n");
    }
}

上面这个代码太鸡肋了,然后看一眼,最后一个for貌似没什么用,放到上一个for里面,得到了下面的代码

代码2

#include <stdio.h>
#include <math.h>
int main()
{
    int n;
    scanf("%d",&n);
    int num[n];
    int count[n];
    int i = 0,j = 0;
    for(i = 0; i < n;i++)
    {
        scanf("%d",&num[i]);
        count[i] = 0;
        if(num[i] == 1)count[i] = 1;
        for(j = 2;j <= sqrt(num[i]);j++)
        {
            if(num[i] % j == 0){count[i] = 1;break;}
        }
        if(count[i])printf("No\n");
        else printf("Yes\n");
    }

}

其实这样就差不多了,但是数组在这里看起来不太舒服,其实这里面就不需要用到数组了,每一个数判断一次直接输出了就,不需要用数组存储这个数字变量和素数判断,得到最终版的答案,上代码

代码(终极版

#include <stdio.h>
#include <math.h>
int main()
{
    int n;
    scanf("%d",&n);
    int num;
    int count;
    int i = 0,j = 0;
    for(i = 0; i < n;i++)
    {
        scanf("%d",&num);
        count = 0;
        if(num == 1)count = 1;
        for(j = 2;j <= sqrt(num);j++)
        {
            if(num % j == 0){count = 1;break;}
        }
        if(count)printf("No\n");
        else printf("Yes\n");
    }

}

虽然我们现在把题做完了,但是这道题有一个容易忽略的细节,大家看
在这里插入图片描述
这两个标红框的地方,这里有一种情况容易忽略掉,那就是输入的数字是1的情况,如果这个没有写这个情况的话,会得到在这里插入图片描述
这样的一个情况,大家在写的时候一定要注意细节不然4分就白白送人了

以上所有代码均为自己编写,本人水平有限,如果有哪里出错或者有更好的解法可以与我私信或在评论区里进行讨论

上一题:团体程序设计天梯赛-练习集——L1-027 出租

下一题:团体程序设计天梯赛-练习集——L1-029 是不是太胖了


http://www.kler.cn/a/527841.html

相关文章:

  • 解锁豆瓣高清海报(一) 深度爬虫与requests进阶之路
  • C语言--数据在内存中的存储
  • 【Proteus仿真】【51单片机】多功能计算器系统设计
  • SpringBoot+Vue的理解(含axios/ajax)-前后端交互前端篇
  • 【huawei】云计算的备份和容灾
  • 《LLM大语言模型+RAG实战+Langchain+ChatGLM-4+Transformer》
  • 课程设计|结构力学
  • 蓝桥杯真题k倍区间
  • C# Winform enter键怎么去关联button
  • 分层多维度应急管理系统的设计
  • 疯狂拆单词01
  • 文件上传功能(一)
  • 抽象类与抽象方法详解
  • Matrials studio 软件安装步骤(百度网盘链接)
  • 【RocketMQ 存储】- broker 端存储批量消息的逻辑
  • CE-PBFT:大规模联盟区块链的高可用一致性算法
  • Unet 改进:在encoder和decoder间加入TransformerBlock
  • 【leetcode强化练习·二叉树】同时运用两种思维解题
  • 【Java异步编程】CompletableFuture基础(1):创建不同线程的子任务、子任务链式调用与异常处理
  • 黑马点评 - 商铺类型缓存练习题(Redis List实现)
  • Hive:复杂数据类型之Map函数
  • 深度学习之“数据的相关性”
  • 人工智能导论--第1章-知识点与学习笔记
  • 用一个例子详细说明python单例模式
  • 【AI论文】VideoAuteur:迈向长叙事视频
  • gentoo linux中安装希沃白板5