gpt4 book ai didi

【算法】数学之旅,根据素数特征寻找底数

转载 作者:我是一只小鸟 更新时间:2023-09-27 15:02:59 38 4
gpt4 key购买 nike

当下午六点的钟声敲响,小悦如常地结束了一天的工作。她坐在工位上,脑海中不禁回想起自己学习数学的过程。那些数字、公式以及那些漫长夜晚的努力,都像是一段迷人的旋律,让她无法忘怀。当她沉浸在回忆中时,那迷人的微笑映入了旁人的眼帘,而这一幕恰好被一位同事捕捉到.

“你在笑什么呢?”同事好奇地问道.

“哦,没什么。”小悦笑着回答,“只是想起了一些有趣的数学问题。” 。

由于等电梯的人太多,小悦便开始回想那些神奇的数字,它们就像是被隐藏在数学世界中的宝藏,让当时年少的她充满了好奇与探索的欲望。她一一列举出那些数字:89、271、325、328...每个数字都像是拥有独特的秘密.

她深入思考这些数字的特性,尝试找出它们的规律。她惊奇地发现,这些数字的平方值经过反转后,居然都是素数。例如,89的平方是7921,反转后成为1297,这是一个素数;271的平方是73441,反转后成为14437,同样也是一个素数...这些看似平凡无奇的数字,经过平方和反转之后,竟然拥有了素数的特质,这让她感到无比惊奇.

然而,这还不足以满足小悦的好奇心。她进一步发现,这些数字的立方值经过反转后也隐藏着素数的秘密。比如89的立方是704969,反转后是969407,这是一个素数;271的立方是19902511,反转后是11520991,也是一个素数...这些原本看似简单的数字,在经过立方和反转之后,同样也拥有了素数的特质.

当时的小悦深深地被这些发现所吸引,她开始思考这些现象背后的原因。她发现这其实是一种数学规律,与素数、数字反转和数学运算等概念密切关联。这些概念在数学教学中广泛应用于数论、算术和代数等方面的练习和学习,让她对数学有了更深层次的理解和认识.

同时,小悦还意识到这些数学问题的应用不仅仅局限于数学学习和教育。在编程练习中,这些问题也能够引导学习者加深对循环、条件判断和函数等概念的理解和应用。通过解决这些问题,学习者可以锻炼编程思维和解决问题的能力.

小悦的思绪还在继续,她依然沉浸在这种数学世界的探索和发现中,享受着这种无尽的乐趣和挑战。对她来说,这些神奇的数字就像是一把钥匙,打开了一扇通向更广阔数学世界的大门。她期待着未来能够继续用这把钥匙解开更多的数学谜题,探索更多未知的领域.

“数学真是个奇妙的世界啊。”小悦感叹道,她的眼中闪烁着对数学知识无尽的热爱和追求。而那个在工位上回想学习数学过程、下意识迷人的微笑的小悦,永远是同事们心中最美的风景.

小悦面临的问题是如何将这些特殊的数从数字的海洋中寻找出来:创建一个函数SqCubRevPrime(),它接收数组的序号1,2,3,4,5...并输出相应的底数值,这些底数应该能满足平方、立方后反转的数仍是素数的要求:

SqCubRevPrime(1)==89 。

SqCubRevPrime(2)==271 。

SqCubRevPrime(3)==325 。

SqCubRevPrime(4)==328 。


算法实现

                          
                             1
                          
                          
                            using
                          
                          
                             System;

                          
                          
                             2
                          
                          
                            using
                          
                          
                             System.Collections.Generic;

                          
                          
                             3
                          
                          
                             4
                          
                          
                            public
                          
                          
                            static
                          
                          
                            class
                          
                          
                             Edm {

                          
                          
                             5
                          
                          
                            //
                          
                          
                             判断一个无符号长整型数是否为质数(素数)
                          
                          
                             6
                          
                          
                            private
                          
                          
                            static
                          
                          
                            bool
                          
                           IsOddPrime(
                          
                            ulong
                          
                          
                             n) {

                          
                          
                             7
                          
                          
                            //
                          
                          
                             从3开始,递增2,直到循环变量的平方大于等于给定的数
                          
                          
                             8
                          
                          
                            for
                          
                           (
                          
                            ulong
                          
                           d = 
                          
                            3
                          
                          ; d * d <= n; d += 
                          
                            2
                          
                          
                            ) {

                          
                          
                             9
                          
                          
                            //
                          
                          
                             如果给定的数能够被循环变量整除,则返回false,表示不是质数
                          
                          
                            10
                          
                          
                            if
                          
                           (n % d == 
                          
                            0
                          
                          ) 
                          
                            return
                          
                          
                            false
                          
                          
                            ;

                          
                          
                            11
                          
                          
                                }

                          
                          
                            12
                          
                          
                            //
                          
                          
                             循环结束后没有找到能整除的数,则返回true,表示是质数
                          
                          
                            13
                          
                          
                            return
                          
                          
                            true
                          
                          
                            ;

                          
                          
                            14
                          
                          
                              }

                          
                          
                            15
                          
                          
                            16
                          
                          
                            //
                          
                          
                             将一个无符号长整型数进行反转
                          
                          
                            17
                          
                          
                            private
                          
                          
                            static
                          
                          
                            ulong
                          
                           Reverse(
                          
                            ulong
                          
                          
                             n) {

                          
                          
                            18
                          
                          
                            ulong
                          
                           r = 
                          
                            0
                          
                          
                            ;

                          
                          
                            19
                          
                          
                            //
                          
                          
                             从个位开始依次取出并放置到结果变量中
                          
                          
                            20
                          
                          
                            while
                          
                           (n > 
                          
                            0
                          
                          
                            ) {

                          
                          
                            21
                          
                                 r = r * 
                          
                            10
                          
                           + n % 
                          
                            10
                          
                          
                            ;

                          
                          
                            22
                          
                          
                            //
                          
                          
                             将给定的数除以10,继续取下一个位数
                          
                          
                            23
                          
                                 n /= 
                          
                            10
                          
                          
                            ;

                          
                          
                            24
                          
                          
                                }

                          
                          
                            25
                          
                          
                            //
                          
                          
                             返回结果变量,即反转后的数
                          
                          
                            26
                          
                          
                            return
                          
                          
                             r;

                          
                          
                            27
                          
                          
                              }

                          
                          
                            28
                          
                          
                            29
                          
                          
                            //
                          
                          
                             构建一个无符号整型数的列表
                          
                          
                            30
                          
                          
                            private
                          
                          
                            static
                          
                           List<
                          
                            uint
                          
                          > Build(
                          
                            uint
                          
                          
                             max) {

                          
                          
                            31
                          
                          
                            var
                          
                           res = 
                          
                            new
                          
                           List<
                          
                            uint
                          
                          >
                          
                            ();

                          
                          
                            32
                          
                          
                            //
                          
                          
                             从89开始循环到给定的最大值max
                          
                          
                            33
                          
                          
                            for
                          
                           (
                          
                            uint
                          
                           n = 
                          
                            89
                          
                          ; n <= max; n++
                          
                            ) {

                          
                          
                            34
                          
                          
                            ulong
                          
                           n2 = n * n, r2 =
                          
                             Reverse(n2);

                          
                          
                            35
                          
                          
                            //
                          
                          
                             计算当前数的平方,并将结果保存在变量n2中

                          
                          
                            36
                          
                          
                            //
                          
                          
                             将n2进行反转,并将结果保存在变量r2中
                          
                          
                            37
                          
                          
                            if
                          
                           (r2 > 
                          
                            1
                          
                           && r2 % 
                          
                            2
                          
                           != 
                          
                            0
                          
                          
                            ) {

                          
                          
                            38
                          
                          
                            ulong
                          
                           r3 = Reverse(n2 *
                          
                             n);

                          
                          
                            39
                          
                          
                            //
                          
                          
                             如果r2为奇数且r3为奇数且r2和r3都是质数,则将当前数n添加到列表res中
                          
                          
                            40
                          
                          
                            if
                          
                           (r3 % 
                          
                            2
                          
                           != 
                          
                            0
                          
                           && IsOddPrime(r2) &&
                          
                             IsOddPrime(r3)) res.Add(n);

                          
                          
                            41
                          
                          
                                  }

                          
                          
                            42
                          
                          
                                }

                          
                          
                            43
                          
                          
                            //
                          
                          
                             返回列表res
                          
                          
                            44
                          
                          
                            return
                          
                          
                             res;

                          
                          
                            45
                          
                          
                              }

                          
                          
                            46
                          
                          
                            47
                          
                          
                            //
                          
                          
                             调用Build方法并传入57200作为参数后的结果列表
                          
                          
                            48
                          
                          
                            private
                          
                          
                            static
                          
                           List<
                          
                            uint
                          
                          > Seq = Build(
                          
                            57200
                          
                          
                            );

                          
                          
                            49
                          
                          
                            50
                          
                          
                            //
                          
                          
                             返回列表Seq中指定索引位置的数
                          
                          
                            51
                          
                          
                            public
                          
                          
                            static
                          
                          
                            uint
                          
                           SqCubRevPrime(
                          
                            int
                          
                          
                             n) {

                          
                          
                            52
                          
                          
                            return
                          
                           Seq[n - 
                          
                            1
                          
                          
                            ];

                          
                          
                            53
                          
                          
                              }

                          
                          
                            54
                          
                           }
                        
  1. IsOddPrime  方法用于判断一个无符号长整型数是否为奇数质数。它使用一个循环,从3开始,递增2,直到循环变量的平方大于等于给定的数。在循环中,如果给定的数能够被循环变量整除,则返回false,表示不是质数。如果循环结束后没有找到能整除的数,则返回true,表示是质数.

  2. Reverse  方法用于将一个无符号长整型数进行反转。它使用一个循环,将给定的数从个位开始依次取出并放置到结果变量中,然后将给定的数除以10,继续取下一个位数,直到给定的数变为0。最后返回结果变量,即反转后的数.

  3. Build  方法用于构建一个无符号整型数的列表。它首先创建一个空的列表变量  res ,然后从89开始循环到给定的最大值  max 。在循环中,首先计算当前数的平方,并将结果保存在变量  n2  中。然后将  n2  进行反转,并将结果保存在变量  r2  中。如果  r2  大于1且为奇数,进一步计算  n2  的立方并将结果保存在变量  r3  中。如果  r3  为奇数且  r2  和  r3  都是质数,则将当前数  n  添加到列表  res  中。最后返回列表  res .

  4. Seq  是一个列表变量,用于保存调用  Build  方法并传入57200作为参数后的结果列表.

  5. SqCubRevPrime  是一个公共静态方法,用于返回列表  Seq  中指定索引位置的数。它接受一个整型参数  n ,并返回列表  Seq  中索引为  n - 1  的元素.


测试用例:

                          
                             1
                          
                          
                            namespace
                          
                          
                             Solution {

                          
                          
                             2
                          
                          
                             3
                          
                          
                            using
                          
                          
                             NUnit.Framework;

                          
                          
                             4
                          
                          
                            using
                          
                          
                             System;

                          
                          
                             5
                          
                          
                             6
                          
                          
                              [TestFixture]

                          
                          
                             7
                          
                          
                            public
                          
                          
                            class
                          
                          
                             SolutionTest

                          
                          
                             8
                          
                          
                              {

                          
                          
                             9
                          
                          
                            static
                          
                          
                            void
                          
                           Act(
                          
                            uint
                          
                           expected, 
                          
                            int
                          
                          
                             n) 

                          
                          
                            10
                          
                                 => Assert.AreEqual(expected, Edm.SqCubRevPrime(n), $
                          
                            "
                          
                          
                            n = {n}
                          
                          
                            "
                          
                          
                            );

                          
                          
                            11
                          
                          
                            12
                          
                               [TestCase(
                          
                            89
                          
                          , 
                          
                            1
                          
                          
                            )]

                          
                          
                            13
                          
                               [TestCase(
                          
                            271
                          
                          , 
                          
                            2
                          
                          
                            )]

                          
                          
                            14
                          
                               [TestCase(
                          
                            325
                          
                          , 
                          
                            3
                          
                          
                            )]

                          
                          
                            15
                          
                               [TestCase(
                          
                            328
                          
                          , 
                          
                            4
                          
                          
                            )]

                          
                          
                            16
                          
                          
                            public
                          
                          
                            void
                          
                           FixedTests(
                          
                            int
                          
                           expected, 
                          
                            int
                          
                           n) => Act((
                          
                            uint
                          
                          
                            )expected, n);

                          
                          
                            17
                          
                          
                            18
                          
                          
                                [Test]

                          
                          
                            19
                          
                          
                            public
                          
                          
                            void
                          
                           RandomTests([Random(
                          
                            1
                          
                          , 
                          
                            230
                          
                          , 
                          
                            50
                          
                          )] 
                          
                            int
                          
                          
                             n)

                          
                          
                            20
                          
                          
                                {

                          
                          
                            21
                          
                          
                            var
                          
                           solutions = 
                          
                            new
                          
                          
                            uint
                          
                          [] {
                          
                            89
                          
                          , 
                          
                            271
                          
                          , 
                          
                            325
                          
                          , 
                          
                            328
                          
                          , 
                          
                            890
                          
                          , 
                          
                            1025
                          
                          , 
                          
                            1055
                          
                          , 
                          
                            1081
                          
                          , 
                          
                            1129
                          
                          , 
                          
                            1169
                          
                          , 
                          
                            1241
                          
                          , 
                          
                            2657
                          
                          , 
                          
                            2710
                          
                          , 
                          
                            3112
                          
                          , 
                          
                            3121
                          
                          , 
                          
                            3149
                          
                          , 
                          
                            3244
                          
                          , 
                          
                            3250
                          
                          , 
                          
                            3263
                          
                          , 
                          
                            3280
                          
                          , 
                          
                            3335
                          
                          , 
                          
                            3346
                          
                          , 
                          
                            3403
                          
                          , 
                          
                            4193
                          
                          , 
                          
                            4222
                          
                          , 
                          
                            4231
                          
                          , 
                          
                            4289
                          
                          , 
                          
                            4291
                          
                          , 
                          
                            5531
                          
                          , 
                          
                            5584
                          
                          , 
                          
                            5653
                          
                          , 
                          
                            5678
                          
                          , 
                          
                            5716
                          
                          , 
                          
                            5791
                          
                          , 
                          
                            5795
                          
                          , 
                          
                            5836
                          
                          , 
                          
                            5837
                          
                          , 
                          
                            8882
                          
                          , 
                          
                            8900
                          
                          , 
                          
                            8926
                          
                          , 
                          
                            8942
                          
                          , 
                          
                            9664
                          
                          , 
                          
                            9794
                          
                          , 
                          
                            9875
                          
                          , 
                          
                            9962
                          
                          , 
                          
                            10178
                          
                          , 
                          
                            10250
                          
                          , 
                          
                            10393
                          
                          , 
                          
                            10429
                          
                          , 
                          
                            10499
                          
                          , 
                          
                            10550
                          
                          , 
                          
                            10577
                          
                          , 
                          
                            10651
                          
                          , 
                          
                            10679
                          
                          , 
                          
                            10717
                          
                          , 
                          
                            10718
                          
                          , 
                          
                            10739
                          
                          , 
                          
                            10756
                          
                          , 
                          
                            10762
                          
                          , 
                          
                            10810
                          
                          , 
                          
                            10844
                          
                          , 
                          
                            10895
                          
                          , 
                          
                            10898
                          
                          , 
                          
                            10943
                          
                          , 
                          
                            10996
                          
                          , 
                          
                            11035
                          
                          , 
                          
                            11039
                          
                          , 
                          
                            11084
                          
                          , 
                          
                            11137
                          
                          , 
                          
                            11159
                          
                          , 
                          
                            11164
                          
                          , 
                          
                            11182
                          
                          , 
                          
                            11191
                          
                          , 
                          
                            11290
                          
                          , 
                          
                            11351
                          
                          , 
                          
                            11371
                          
                          , 
                          
                            11575
                          
                          , 
                          
                            11690
                          
                          , 
                          
                            11695
                          
                          , 
                          
                            11707
                          
                          , 
                          
                            11722
                          
                          , 
                          
                            11732
                          
                          , 
                          
                            11795
                          
                          , 
                          
                            11827
                          
                          , 
                          
                            11861
                          
                          , 
                          
                            11885
                          
                          , 
                          
                            12109
                          
                          , 
                          
                            12124
                          
                          , 
                          
                            12242
                          
                          , 
                          
                            12268
                          
                          , 
                          
                            12304
                          
                          , 
                          
                            12361
                          
                          , 
                          
                            12362
                          
                          , 
                          
                            12410
                          
                          , 
                          
                            12433
                          
                          , 
                          
                            12436
                          
                          , 
                          
                            12535
                          
                          , 
                          
                            19144
                          
                          , 
                          
                            19267
                          
                          , 
                          
                            19271
                          
                          , 
                          
                            19273
                          
                          , 
                          
                            19385
                          
                          , 
                          
                            19433
                          
                          , 
                          
                            19442
                          
                          , 
                          
                            19451
                          
                          , 
                          
                            19501
                          
                          , 
                          
                            19564
                          
                          , 
                          
                            19597
                          
                          , 
                          
                            19603
                          
                          , 
                          
                            19631
                          
                          , 
                          
                            19637
                          
                          , 
                          
                            19766
                          
                          , 
                          
                            19846
                          
                          , 
                          
                            19865
                          
                          , 
                          
                            19871
                          
                          , 
                          
                            19909
                          
                          , 
                          
                            19927
                          
                          , 
                          
                            26464
                          
                          , 
                          
                            26491
                          
                          , 
                          
                            26570
                          
                          , 
                          
                            26579
                          
                          , 
                          
                            26621
                          
                          , 
                          
                            26704
                          
                          , 
                          
                            26944
                          
                          , 
                          
                            26965
                          
                          , 
                          
                            27001
                          
                          , 
                          
                            27029
                          
                          , 
                          
                            27052
                          
                          , 
                          
                            27100
                          
                          , 
                          
                            27101
                          
                          , 
                          
                            31120
                          
                          , 
                          
                            31210
                          
                          , 
                          
                            31223
                          
                          , 
                          
                            31237
                          
                          , 
                          
                            31261
                          
                          , 
                          
                            31327
                          
                          , 
                          
                            31331
                          
                          , 
                          
                            31351
                          
                          , 
                          
                            31463
                          
                          , 
                          
                            31469
                          
                          , 
                          
                            31490
                          
                          , 
                          
                            31534
                          
                          , 
                          
                            31561
                          
                          , 
                          
                            31657
                          
                          , 
                          
                            31726
                          
                          , 
                          
                            31739
                          
                          , 
                          
                            31784
                          
                          , 
                          
                            31807
                          
                          , 
                          
                            31883
                          
                          , 
                          
                            31928
                          
                          , 
                          
                            31978
                          
                          , 
                          
                            32066
                          
                          , 
                          
                            32072
                          
                          , 
                          
                            32213
                          
                          , 
                          
                            32255
                          
                          , 
                          
                            32308
                          
                          , 
                          
                            32431
                          
                          , 
                          
                            32440
                          
                          , 
                          
                            32446
                          
                          , 
                          
                            32500
                          
                          , 
                          
                            32539
                          
                          , 
                          
                            32564
                          
                          , 
                          
                            32573
                          
                          , 
                          
                            32630
                          
                          , 
                          
                            32656
                          
                          , 
                          
                            32708
                          
                          , 
                          
                            32749
                          
                          , 
                          
                            32759
                          
                          , 
                          
                            32800
                          
                          , 
                          
                            32888
                          
                          , 
                          
                            32969
                          
                          , 
                          
                            33059
                          
                          , 
                          
                            33254
                          
                          , 
                          
                            33325
                          
                          , 
                          
                            33338
                          
                          , 
                          
                            33350
                          
                          , 
                          
                            33404
                          
                          , 
                          
                            33460
                          
                          , 
                          
                            33475
                          
                          , 
                          
                            33509
                          
                          , 
                          
                            33568
                          
                          , 
                          
                            33575
                          
                          , 
                          
                            33701
                          
                          , 
                          
                            33833
                          
                          , 
                          
                            34030
                          
                          , 
                          
                            34112
                          
                          , 
                          
                            34159
                          
                          , 
                          
                            34163
                          
                          , 
                          
                            41351
                          
                          , 
                          
                            41429
                          
                          , 
                          
                            41473
                          
                          , 
                          
                            41501
                          
                          , 
                          
                            41608
                          
                          , 
                          
                            41639
                          
                          , 
                          
                            41839
                          
                          , 
                          
                            41879
                          
                          , 
                          
                            41930
                          
                          , 
                          
                            41933
                          
                          , 
                          
                            41992
                          
                          , 
                          
                            42029
                          
                          , 
                          
                            42089
                          
                          , 
                          
                            42103
                          
                          , 
                          
                            42121
                          
                          , 
                          
                            42179
                          
                          , 
                          
                            42220
                          
                          , 
                          
                            42235
                          
                          , 
                          
                            42310
                          
                          , 
                          
                            42326
                          
                          , 
                          
                            42385
                          
                          , 
                          
                            42463
                          
                          , 
                          
                            42466
                          
                          , 
                          
                            42524
                          
                          , 
                          
                            42575
                          
                          , 
                          
                            42607
                          
                          , 
                          
                            42682
                          
                          , 
                          
                            42782
                          
                          , 
                          
                            42839
                          
                          , 
                          
                            42890
                          
                          , 
                          
                            42910
                          
                          , 
                          
                            42982
                          
                          , 
                          
                            43045
                          
                          , 
                          
                            43049
                          
                          , 
                          
                            54986
                          
                          , 
                          
                            54991
                          
                          , 
                          
                            55073
                          
                          , 
                          
                            55310
                          
                          , 
                          
                            55492
                          
                          , 
                          
                            55589
                          
                          , 
                          
                            55598
                          
                          , 
                          
                            55603
                          
                          , 
                          
                            55651
                          
                          , 
                          
                            55697
                          
                          , 
                          
                            55718
                          
                          , 
                          
                            55778
                          
                          , 
                          
                            55840
                          
                          , 
                          
                            55859
                          
                          , 
                          
                            55879
                          
                          , 
                          
                            55916
                          
                          , 
                          
                            56005
                          
                          , 
                          
                            56093
                          
                          , 
                          
                            56261
                          
                          , 
                          
                            56279
                          
                          , 
                          
                            56356
                          
                          , 
                          
                            56530
                          
                          , 
                          
                            56681
                          
                          , 
                          
                            56780
                          
                          , 
                          
                            56809
                          
                          , 
                          
                            56968
                          
                          , 
                          
                            57160
                          
                          , 
                          
                            57185
                          
                          
                            };

                          
                          
                            22
                          
                          
                            var
                          
                           expected = solutions[n - 
                          
                            1
                          
                          
                            ];

                          
                          
                            23
                          
                          
                                  Act(expected, n);

                          
                          
                            24
                          
                          
                                }

                          
                          
                            25
                          
                          
                              }

                          
                          
                            26
                          
                           }
                        

  。

最后此篇关于【算法】数学之旅,根据素数特征寻找底数的文章就讲到这里了,如果你想了解更多关于【算法】数学之旅,根据素数特征寻找底数的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com