- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
当下午六点的钟声敲响,小悦如常地结束了一天的工作。她坐在工位上,脑海中不禁回想起自己学习数学的过程。那些数字、公式以及那些漫长夜晚的努力,都像是一段迷人的旋律,让她无法忘怀。当她沉浸在回忆中时,那迷人的微笑映入了旁人的眼帘,而这一幕恰好被一位同事捕捉到.
“你在笑什么呢?”同事好奇地问道.
“哦,没什么。”小悦笑着回答,“只是想起了一些有趣的数学问题。” 。
由于等电梯的人太多,小悦便开始回想那些神奇的数字,它们就像是被隐藏在数学世界中的宝藏,让当时年少的她充满了好奇与探索的欲望。她一一列举出那些数字: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 }
IsOddPrime 方法用于判断一个无符号长整型数是否为奇数质数。它使用一个循环,从3开始,递增2,直到循环变量的平方大于等于给定的数。在循环中,如果给定的数能够被循环变量整除,则返回false,表示不是质数。如果循环结束后没有找到能整除的数,则返回true,表示是质数.
Reverse 方法用于将一个无符号长整型数进行反转。它使用一个循环,将给定的数从个位开始依次取出并放置到结果变量中,然后将给定的数除以10,继续取下一个位数,直到给定的数变为0。最后返回结果变量,即反转后的数.
Build 方法用于构建一个无符号整型数的列表。它首先创建一个空的列表变量 res ,然后从89开始循环到给定的最大值 max 。在循环中,首先计算当前数的平方,并将结果保存在变量 n2 中。然后将 n2 进行反转,并将结果保存在变量 r2 中。如果 r2 大于1且为奇数,进一步计算 n2 的立方并将结果保存在变量 r3 中。如果 r3 为奇数且 r2 和 r3 都是质数,则将当前数 n 添加到列表 res 中。最后返回列表 res .
Seq 是一个列表变量,用于保存调用 Build 方法并传入57200作为参数后的结果列表.
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的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
设置 我希望能够定义一个特征,使得任何实现该特征的结构不仅必须实现函数,而且还必须为某些常量指定值。所以也许是这样的: trait MyTrait { const MY_CONST: u8;
在我的 Web 应用程序中,授权用户至少有 4 个“方面”:http session 相关数据、持久数据、facebook 数据、运行时业务数据。 我决定使用案例类组合而不是特征至少有两个原因: 性状
我正在尝试使用以下代码从类中获取完整数据成员的列表: import std.stdio; import std.traits; class D { static string[] integr
我正在尝试实现 From对于我的一种类型。它应该消耗任意长度的行(仅在运行时已知)并从行中获取数据。编译器提示 &[&str; 2]不是 &[&str] ,即它不能将固定大小的切片转换为任意长度的切片
有人可以请你这么好心,并指出一种提取拟合树中使用的列/特征的方法,使用如下代码: library(dplyr) library(caret) library(rpart) df % dplyr
假设我定义了一个 Group所有组操作的特征。是否可以创建一个包装器AGroup超过 Group无需手动派生所有操作? 基本上,我想要这个: #[derive (Copy, Debug, Clone,
最近浏览了Markus Stocker的博客他很好地解释了如何在使用 observation 时表示传感器观察结果。 SSN 的模块本体论。我完全理解他的解释,但我发现有一件事多余地代表了一个的两个特
我有以下情况/代码; trait Model { def myField: String } case class MyModel(myField: String) extends Model
我想让一个案例类扩展一个特征 以下是我的要求: 我需要为 child 使用案例类。这是一个硬性要求,因为 scopt ( https://github.com/scopt/scopt ) parent
最近浏览了Markus Stocker的博客他很好地解释了如何在使用 observation 时表示传感器观察结果。 SSN 的模块本体论。我完全理解他的解释,但我发现有一件事多余地代表了一个的两个特
我有以下情况/代码; trait Model { def myField: String } case class MyModel(myField: String) extends Model
不确定标题是否完全有意义,对此感到抱歉。我是机器学习新手,正在使用 Scikit 和决策树。 这就是我想做的;我想获取所有输入并包含一个独特的功能,即客户端 ID。现在,客户端 ID 是唯一的,无法以
我想读取具有 Eigen 的 MNIST 数据集,每个文件都由一个矩阵表示。我希望在运行时确定矩阵大小,因为训练集和测试集的大小不同。 Map> MNIST_dataset((uchar*)*_dat
在 MATLAB 中,我可以选择一个分散的子矩阵,例如: A = [1 ,2 ,3;4,5,6;7,8,9] A([1,3],[1,3]) = [1,3;7,9] 有没有用 Eigen 做到这一点的聪
我在执行 Into 时遇到问题Rust 中通用结构的特征。下面是我正在尝试做的简化版本: struct Wrapper { value: T } impl Into for Wrapper {
我有这段 matlab 代码,我想用 Eigen 编写: [V_K,D_K] = eig(K); d_k = diag(D_K); ind_k = find(d_k > 1e-8); d_k(ind_
我正在使用 Eigen C++ 矩阵库,我想获取对矩阵列的引用。文档说要使用 matrix_object.col(index),但这似乎返回了一个表示列的对象,而不是简单地引用原始矩阵对象中的列。我担
在乘以很多旋转矩阵之后,由于舍入问题(去正交化),最终结果可能不再是有效的旋转矩阵 重新正交化的一种方法是遵循以下步骤: 将旋转矩阵转换为轴角表示法 ( link ) 将轴角转换回旋转矩阵 ( lin
定义可由命名空间中的多个类使用的常量的最佳方法是什么?我试图避免太多的继承,所以扩展基类不是一个理想的解决方案,我正在努力寻找一个使用特征的好的解决方案。这在 PHP 5.4 中是可行的还是应该采用不
定义可由命名空间中的多个类使用的常量的最佳方法是什么?我试图避免太多的继承,所以扩展基类不是一个理想的解决方案,我正在努力寻找一个使用特征的好的解决方案。这在 PHP 5.4 中是可行的还是应该采用不
我是一名优秀的程序员,十分优秀!