当前位置: 首页 > news >正文

Project Ruler 算法练习之除数问题

问题描述:

The fraction 49/98 is a curious fraction, as an inexperienced mathematician in attempting to simplify it may incorrectly believe that49/98 = 4/8, which is correct, is obtained by cancelling the 9s.

We shall consider fractions like, 30/50 = 3/5, to be trivial examples.

There are exactly four non-trivial examples of this type of fraction, less than one in value, and containing two digits in the numerator and denominator.

If the product of these four fractions is given in its lowest common terms, find the value of the denominator.


思路:

1.找到1位数的所有分数

2.找到两位数的分数,把分子分母有重叠的部分去掉,如果相等,存入数组

3.对比两个数组的结果,找到相同的


javascript实现:


(function(){

  var dig = function (m,n){
  var arr = new Array();
  for(j=m+1;j<n;j++){
 for(var i = m;i < j ;i++){
 arr.push({i:i,j:j}); 
}
 } 
return arr;
 }

var filter = function(arr){
var ret  =new Array();
for(var i = 0; i < arr.length ; i++){

var strN = arr[i].i.toString();
var strM = arr[i].j.toString();

if(strN.indexOf(strM[0]) != -1&&strM[0]!='0'){
if(strN[0] == strM[0] && parseInt(strN)/parseInt(strM) == parseInt(strN[1]) / parseInt(strM[1])){ret.push({i:strN[1],j:strM[1],ori:strN+"/"+strM});}
else if(strN[1] == strM[0] && parseInt(strN)/parseInt(strM) == parseInt(strN[0]) / parseInt(strM[1])){ret.push({i:strN[0],j:strM[1],ori:strN+"/"+strM});}
}

else if(strN.indexOf(strM[1]) != -1&&strM[1]!='0'){
if(strN[0] == strM[1]&& parseInt(strN)/parseInt(strM) == parseInt(strN[1]) / parseInt(strM[0])){ret.push({i:strN[1],j:strM[0],ori:strN+"/"+strM});}
else if (strN[0] == strM[1]  && parseInt(strN)/parseInt(strM) == parseInt(strN[1]) / parseInt(strM[0])){ret.push({i:strN[1],j:strM[0],ori:strN+"/"+strM});}
}

}

return ret;
}

var ret1 = dig(1,10);
var ret2= filter(dig(10,100)); 
console.log(ret2);


for(var j = 0 ;j < ret1.length ;j++){
for(var i = 0;i < ret2.length; i++){
//console.log(ret2[i].i + "/" + ret2[i].j + " = " + ret1[j].i + "/" + ret1[j].j);
if(parseInt(ret2[i].i) / parseInt(ret2[i].j) == parseInt(ret1[j].i) / parseInt(ret1[j].j)){
console.log(ret2[i].ori + " = " + ret1[j].i + "/" + ret1[j].j);
}

}   
}


})();


相关文章:

  • 编译Android cupcake 核心
  • Project Ruler 算法练习之 10 进制 转 2进制 以及数字对称
  • 二次捆绑,刻不容缓
  • Project Ruler 算法练习之 Truncate Prime
  • 邮件群发当中显示隐藏其他收件人
  • TFS Preview 删除项目命令
  • 探秘新体验 Windows 7各项功能试用
  • Windows 7 RC版改进36个功能
  • Windows 7 7048/Beta、Vista、XP性能对比
  • 兼容Windows7的多点触摸显示器即将面世
  • 如何加速Windows 7的任务栏窗口预览
  • 8皇后问题--回溯法 (循环递归)
  • Windows 7:在Homegroup中链接在线ID并共享文件
  • 解方程 (允许误差)
  • 算法基础练习--最大公约数和最小公倍数
  • $translatePartialLoader加载失败及解决方式
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • Brief introduction of how to 'Call, Apply and Bind'
  • CAP理论的例子讲解
  • create-react-app做的留言板
  • Facebook AccountKit 接入的坑点
  • HTML5新特性总结
  • JavaScript类型识别
  • JavaScript设计模式系列一:工厂模式
  • Laravel 中的一个后期静态绑定
  • Logstash 参考指南(目录)
  • mysql外键的使用
  • node.js
  • node-glob通配符
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Sequelize 中文文档 v4 - Getting started - 入门
  • SpiderData 2019年2月25日 DApp数据排行榜
  • vagrant 添加本地 box 安装 laravel homestead
  • yii2中session跨域名的问题
  • 我看到的前端
  • Android开发者必备:推荐一款助力开发的开源APP
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ​什么是bug?bug的源头在哪里?
  • ​油烟净化器电源安全,保障健康餐饮生活
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (理论篇)httpmoudle和httphandler一览
  • (三)模仿学习-Action数据的模仿
  • (学习日记)2024.02.29:UCOSIII第二节
  • (一)kafka实战——kafka源码编译启动
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • .net core webapi 大文件上传到wwwroot文件夹
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • [100天算法】-二叉树剪枝(day 48)
  • [ASP.NET 控件实作 Day7] 设定工具箱的控件图标
  • [C#] 如何调用Python脚本程序
  • [C#]C#学习笔记-CIL和动态程序集