算法:寻找吸血鬼数(JS)

任务二寻找吸血鬼数
打印所有4位吸血鬼数和它们的獠牙
 
提示:一共有7个;
吸血鬼数:
-该鬼的位数为偶数;
-该数的所有位中。是0的位少一半;
-该数每一位上的数字重新组合为两个位数相等的数,乘积正好等于该数。

例如:1260是吸血鬼数,他的獠牙是21和60.
-1260是4位数,4是偶数;
-1260中。是0的位数只有1个。少于一半’
-1260可以重新组合成21和60,这俩个数的位数想等都是2,21*60正好是1260。
1 function findVampireNumbers() { 2 let sum = 0; // 记录找到的吸血鬼数的组数 3 4 for (let i = 10; i < 100; i++) { // 第一个两位数 5 for (let j = i + 1; j < 100; j++) { // 第二个两位数,大于第一个数 6 let i_val = i * j; // 计算两个两位数的乘积 7 if (i_val < 1000 || i_val > 9999) continue; // 排除乘积不是四位数的情况 8 9 let ar_str1 = Array.from(String(i_val)); // 将乘积转换为字符数组 10 let ar_str2 = Array.from(String(i) + String(j)); // 将两个两位数拼接后转换为字符数组 11 ar_str1.sort(); // 对乘积的字符数组进行排序 12 ar_str2.sort(); // 对拼接后的字符数组进行排序 13 14 if (JSON.stringify(ar_str1) === JSON.stringify(ar_str2)) { 15 // 如果排序后的字符数组相等,则找到一组吸血鬼数 16 sum++; 17 console.log(`第${sum}组: ${i}*${j}=${i_val}`); 18 console.log(`吸血鬼是${i_val},獠牙是${i}、${j}`); 19 } 20 } 21 } 22 23 console.log(`共找到${sum}组吸血鬼数`); 24 }

代码解释:

这段代码用于寻找吸血鬼数。
函数findVampireNumbers中:
初始化变量sum为0,用于记录找到的吸血鬼数的组数。
使用两个嵌套的for循环遍历所有可能的两位数。
在循环中,计算两个两位数的乘积并存储在变量i_val中。
如果乘积不是四位数(范围在1000到9999之外),则继续下一轮循环。
将乘积转换为字符数组ar_str1,将两个两位数拼接后转换为字符数组ar_str2。
对字符数组进行排序。
如果排序后的字符数组相等,则找到一组吸血鬼数。增加sum的值,并打印出组号、乘法表达式和吸血鬼数。
循环结束后,打印出总共找到的吸血鬼数的组数。
通过这段代码,我们可以寻找并打印出所有满足条件的吸血鬼数及其组合。
 

__EOF__

本文作者安知竹墨
本文链接https://www.cnblogs.com/anzhizhumo/p/17746452.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   安知竹墨  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示