首页 > 其他分享 >两种思路求100到200之间的所有素数

两种思路求100到200之间的所有素数

时间:2024-03-14 23:31:24浏览次数:17  
标签:200 判断 int include 素数 100 main

        首先我们来看下素数的定义:除了一和它本身外不能被其他数整除的数。

        假如我们要判断 i 是否是素数,主要的方法是用 i 对 2 到(i - 1)去求余,如果所有余数都不为零,则说明 i 就是素数。

        那么现在我们来看一下第一种求素数的思路。

#include<stdio.h>
int main()
{
    int i = 0;                       //i就是待运算的一到一百之内的所有的数
    for(i = 100; i <= 200; i++)
       {
        int m = 0, x = 0;            //m就是2到i-1中的所有的整数
         for(m = 2; m <= i - 1; m++) //x是判断i是否为素数的依据
             {
              if (i % m == 0)        //如果求余为零,则说明i一定不是素数
                  break;
              x++;
             }
         if (x == i - 2)             //通过x是否等于i-2来判是否为断素数
            printf("%d\n",i);
       }
     return 0;
} 

         这里的关键是判断 x 是否等于(i - 2),因为如果 i 为素数,则说明 i 一共做了(i- 2)次求余,那么x就会加加(i - 2) 次,所以只需判断x,即可得到结果。

         现在再来看一下第二种求素数的思路。

#include<stdio.h>
int main()
{
    int i = 0;
    for (i = 100; i <= 200; i++)
    {
        int x = 1, m;               //x仍然是判断i是否为素数的依据
        for(m = 2; m <= i - 1; m++) //m是2到i-1之间的所有整数
        {
            if (i % m == 0)         //如果求余为零则说明i一定不为素数
            {
             x = 0;
             break;
            }
        }
        if (x == 1)
        printf("%d\n", i);
    }
    return 0;
}

        这里的关键是判断x是否仍然为1,因为x被初始化为1,当余数为零则把x赋值为0,所以我只需要在所有取余之后再次判断一下x的值(若x为1,i为素数;若x为0,i不为素数)即可得到结果。

以上是我的理解,如果有错误,还请各位指出。

标签:200,判断,int,include,素数,100,main
From: https://blog.csdn.net/2301_79733557/article/details/136723834

相关文章

  • 比特币再创新高,突破72000美元,将超越黄金
    在早些时候短暂跌破68000美元后,周一欧盘,比特币一度突破72000美元大关,最高涨至72391.90美元,创下新的历史新高,市值升至1.398万亿美元,超越白银成为全球市值第八大资产。此外,以太坊也突破4000美元大关,为2021年12月以来首次,年内累涨逾70%。在上周五和周末,比特币都曾多次上探7万美......
  • LeetCodeHot100 73. 矩阵置零 54. 螺旋矩阵 48. 旋转图像 240. 搜索二维矩阵 II
    73.矩阵置零https://leetcode.cn/problems/set-matrix-zeroes/description/?envType=study-plan-v2&envId=top-100-likedpublicvoidsetZeroes(int[][]matrix){inttop=0,bottom=matrix.length,left=0,right=matrix[0].length;int[][]flag......
  • Mysql 100个表嵌套查询 存储过程
    背景1. 业务销售订单会随机落在1~100表中,查询一个订单时需要1到100表依次去查询,增加手工重复操作和浪费时间。2.查询未解冻数据时,需要过滤部分解冻的数据,此时需要用到嵌套查询。 一、根据订单号,循环1~100个表,查询出订单数据CREATEDEFINER=`{数据库连接账号}`@`%`......
  • 素数之积 - 华为OD统一考试(C卷)
    OD统一考试(C卷)分值:100分题解:Java/Python/C++题目描述RSA加密算法只在网络安全世界中无处不在,它利用了极大整数因数分解的困难度,数据越大,安全系数越高,给定一个32位正整,请对其进行因数分解,找出是哪两个素数的乘积。输入描述一个正整数num(......
  • 【华为OD】C卷真题 100分:堆内存申请 C语言代码实现[思路+代码]
     C++、python、java代码:【华为OD】C卷真题100分:堆内存申请C/C++代码实现[思路+代码]-CSDN博客【华为OD】C卷真题100分:堆内存申请Python代码实现[思路+代码]-CSDN博客【华为OD】C卷真题100分:堆内存申请Java代码实现[思路+代码]_有一个总空间为100字节的堆,现要从中新......
  • 【华为OD】C卷真题 200分:分披萨 JavaScript代码实现[思路+代码]
       C++\python\java\C代码:【华为OD】C卷真题200分:分披萨C/C++代码实现[思路+代码]_第一行为正整数奇数n,表示最小披萨小块数量。3<=n<500-CSDN博客【华为OD】C卷真题200分:分披萨python代码实现[思路+代码]-CSDN博客【华为OD】C卷真题200分:分披萨Java代码实现[思路+......
  • [SCOI 2009] 迷路 (矩阵快速幂)
    [SCOI2009]迷路传送门问题描述Windy在有向图中迷路了。该有向图有\({N}\)个节点,Windy从节点\({1}\)出发,他必须恰好在\({T}\)时刻到达节点\({N}\)。现在给出该有向图,你能告诉Windy总共有多少种不同的路径吗?注意:Windy不能在某个节点逗留,且通过某有向边的时间严格......
  • 实验1朱笑雨202383310038
    #include<stdio.h>#include<stdlib.h>intmain(){printf("0\n");printf("<H>\n");printf("II\n");system("pause");return0;}#include<stdio.h>#include<stdl......
  • 2024最新华为OD机试试题库全 -【素数之积】- C卷
    1.......
  • 安卓Java面试题 91- 100
     91.请描述一下Intent和IntentFilter?Intent是组件的通讯使者,可以在组件间传递消息和数据。IntentFilter是intent的筛选器,可以对intent的action,data,catgory,uri这些属性进行筛选,确定符合的目标组件......