2 、 质数求解

作者: 北极的大企鹅 | 来源:发表于2023-09-12 01:41 被阅读0次
  • 题目:判断101-200之间有多少个素数,并输出所有素数。

  • 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数.

  • 思路分析:

    • 这里需要进行两个求解:
      第一个是求解素数的个数,第二个是打印这些素数的.
    • (1) 在101-200之间限定了范围是在101-200之间的数,要判断在这个区间的数,需要判断这区间的每一个数,所以需要遍历,在计算机中,遍历就是做一个或多个for循环操作
      所以判断101-200区间数,就写为

   for(int i = 101; i <= 200; i += 2)
   {

   }

这里定义一个变量i,因为是从101开始的,所以初始值设置为101,到200,就是小于等于200,因为是质数,每次都是增加2,所以写作i+=2,就是i=i+2

  • (2)判断一个数是素数,就是数学中的质数,质数就是除了1和它本身没有其他因数的数,举例5=15,所以5的因数就是1和5,所以5是素数,而6=23.6=1*6,6的因数就有1,2,3,6,这就是四个,它就不是素数.

根据以上描述可得,素数的数,都是可以跟自己整除的数,所以运用取莫运算,因为取莫运算可以得到0和1,0和1可以判断真假,从而得出是否为质数,

可以用101到200之间的数,分别除以一个数,得1的就是质数,得0的就是其他数,这样一直判断下去,这样就又形成一个判断区间,就是多次取莫

因为最小的质数是2,所以从2开始,到根号200结束,每次加一

2~√200 区间(至于为什么是√200,可以百度一下,为什么素数需要根号判断,这是一个数学问题,请问数学老师)这里只说,可以提高效率
得到循环


 for(int j = 2; j <= √200; j++)
 {
     if(i % j == 0)
     {

  • (3)判断是质数,设置一个计数器命名count=0,随着每次增加count增加

     if(是质数)
     {
         count++;
     }

思路就是如此,我这里用了集合,最后数值放入一个集合中显示,如果还是不清楚,代码复制入编译器,然后run一下.


 @SuppressWarnings( { "unchecked", "rawtypes" })
 public class _002101_200PrimeNumber
 {
     public static void main(String[] args)
     {
         countZhiShu();
     }
     private static void countZhiShu()
     {
         // 计算变量
         int count = 0;
         // 集合,用来装所有的素数 
         Vector v = new Vector();
         for(int i = 101; i <= 200; i += 2)
         {
             // 判断依据
             boolean b = false;
             for(int j = 2; j < Math.sqrt(i); j++)
             {
                 // 求余数是否为0  
                 if(i % j == 0)
                 {
                     // 如果为0, 将标签设置为false    
                     b = false;
                     // 可以整除就跳出这个循环                
                     break;
                 }
                 else
                 {
                     b = true;
                 }
             }
             if(b == true)
             {
                 //  素数个数加1  
                 count++;
                 // 将符合要求的i加到集合里 
                 v.add(i);
             }
         }
         System.out.println("100到200中间有 " + count + " 个素数");
         System.out.println("素数为:\n" + v);
     }
 }


相关文章

  • 简历向

    rsa非对称加密: 利用了单向函数正向求解很简单,反向求解很复杂的特性。 随机选取两个质数p1,p2, n = p...

  • 试除法解决质数问题(Python3)

    浅析求解质数问题的一些方法 质数问题是算法中常见的和入门的问题,今天姑且用 "打印100以内所有质数" 这个问题,...

  • 质数刷题

    质数距离如何快速求解一个区间的所有质数。阶乘分解快速对整个阶乘质因数分解。判定1e18的质数直接使用Miller-...

  • for作业

    奇数和 7的倍数和 水仙花数 质数 质数2 乘法口诀

  • Sum All Primes

    求小于等于给定数值的质数之和。 只有 1 和它本身两个约数的数叫质数。例如,2 是质数,因为它只能被 1 和 2 ...

  • Freecodecamp中级算法

    求小于等于给定数值的质数之和。 只有 1 和它本身两个约数的数叫质数。例如,2 是质数,因为它只能被 1 和 2 ...

  • ??Sum All Primes | Free Code Ca

    求小于等于给定数值的质数之和。只有 1 和它本身两个约数的数叫质数。例如,2 是质数,因为它只能被 1 和 2 整...

  • FCC-Sum All Primes

    求小于等于给定数值的质数之和。只有 1 和它本身两个约数的数叫质数。例如,2 是质数,因为它只能被 1 和 2 整...

  • LeetCodeDay26 —— 计数质数

    204. 计数质数 描述 统计所有小于非负数整数 n 的质数的数量。 示例 思路 一次判断从2~n质数的数量返回,...

  • 完成100以内全部素数(质数)求和

    #完成100以内全部素数(质数)求和 #质数,不含1和本身的。 #2、3肯定是质数 #我的思路: #1、先做一个判...

网友评论

    本文标题:2 、 质数求解

    本文链接:https://www.haomeiwen.com/subject/puljvdtx.html