鱼C论坛

 找回密码
 立即注册
查看: 5301|回复: 37

[每日一练] 算法5 ◉‿◉ 随机输入一个整数,将其分解质因数

[复制链接]
发表于 2017-5-10 06:19:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 不二如是 于 2017-5-9 23:33 编辑


                               
登录/注册后可看大图


按照提示,完成代码,秀秀你的编程能力!

不许看答案,否则打屁屁





程序分析:
Snip20170509_43.png

图太丑了,见谅

输入 90, 打印出 90=2*3*3*5 。
        [/b]


源代码:
游客,如果您要查看本帖隐藏内容请回复






如果喜欢,请订阅
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-8-13 23:45:23 | 显示全部楼层
6666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-10-18 10:31:38 | 显示全部楼层
很好多多学习大神
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-23 23:12:43 | 显示全部楼层
啥是质因数

点评

这是小学数学,你连这都不知道,真厉害阿。  发表于 2023-1-13 14:38
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-19 22:02:39 | 显示全部楼层
厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-14 18:46:24 | 显示全部楼层
sfscasfsedfs
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-14 20:43:27 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-30 17:40:57 | 显示全部楼层
两眼一抹黑呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-2 18:30:43 | 显示全部楼层
six six six
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-27 00:52:01 | 显示全部楼层
window.onload = function(){
                                var arr = [];
                                var x = parseInt(prompt("请输入一个整数"));
                                var i = 1;
                                var arr = [];
                                do{        
                                        i++;
                                        if(x%i == 0){
                                                arr.push(i);
                                                x = x/i;
                                                i = 1;
 
                                                
                                        }
                                }while(x != i);
                                alert(arr);
                        };
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-1 15:50:56 | 显示全部楼层
..
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-22 21:16:27 | 显示全部楼层
看看题主思路
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-12 20:19:39 | 显示全部楼层
放弃大数和部分数字的计算了,使人劳累。
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>分解质因数</title>
    <script src="https://cdn.bootcss.com/angular.js/1.4.6/angular.min.js"></script>
</head>

<body ng-app="app">
    <br />
    <center ng-controller="cal">
        <label>请输入一个整数
            <input type="text" ng-model="num" />
        </label>
        <p>分解质因数为: {{ theNum() }}</p>
    </center>
</body>
<script type="text/javascript">
    var app = angular.module('app', []);
    app.controller('cal', function ($scope) {
        $scope.theNum = function () {
            var max = 2048;
            //max数值越大,适用数字的范围越大,越大的数字,网页加载的速度越慢,可能导致浏览器崩溃,2048还是正常的数字,多加个零就考验浏览器了。基本加载不出来,试了好多次了。
            // 所以没办法判断更大的数字
            var count = 0;
            var arr = [];
            var str = '';
            var num = Number($scope.num);
            if (num == 1) {
                str = '1';
            } else {
                for (j = 0; j < max; j++) {
                    for (i = 2; i < max; i++) {
                        if (num % i != 0) {
                            continue;
                        } else {
                            var tmp = num / i;
                            arr[count] = i;
                            count++;
                            if (tmp == num) {
                                break;
                            }
                            num = tmp;
                            break;
                        }
                    }
                }
                for (k = 0; k < count; k++) {
                    str += arr[k];
                    if (k != (count - 1)) {
                        str += '*';
                    }
                }
            }
            return $scope.num + '=' + str;
        }
    });
</script>

</html>

github找了个算法,确实很大。
https://github.com/hustcc/PrimeTable/tree/master/javascript
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-12 21:35:17 | 显示全部楼层
本帖最后由 木Muk 于 2018-8-12 21:46 编辑

看了不二的算法,感觉自己的数学白学了
借着大佬算法,重写一下自己的程序(不过同前面程序一样,由于边输入计算,能计算出来,就是考计算机性能,浏览器咋处理的问题)
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>分解质因数</title>
    <script src="https://cdn.bootcss.com/angular.js/1.4.6/angular.min.js"></script>
</head>

<body ng-app="app">
    <br />
    <center ng-controller="cal">
        <label>请输入一个整数
            <input type="text" ng-model="num" />
        </label>
        <p>分解质因数为: {{ theNum() }}</p>
    </center>
</body>
<script type="text/javascript">
    var app = angular.module('app', []);
    app.controller('cal', function ($scope) {
        $scope.theNum = function () {
            var count = 0;
            var arr = [];
            var str = '';
            var num = Number($scope.num);
            for (var i = 2; i <= Math.sqrt(Number($scope.num)); i++) {
                if (num==i) {
                    break;
                }
                while (num%i == 0) {
                    num /= i;
                    arr[count++] = i;
                }
            }
            if (num != 1) arr[count++] = num;
            for (k=0; k<count; k++) {
                str += arr[k];
                if (k!=(count-1)) {
                    str += '*';
                }
            }

            return $scope.num + '=' + str;
        }
    });
</script>

</html>


还是大佬的输入完再计算比较好
顺手解决"*"问题  手动 @不二如是
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>鱼C-分解质因数</title>
</head>

<body>
    <script>
        //用户输入整数
        var input = parseInt(prompt("请输入一个整数:"));


        //外层循环遍历质因数
        for (var n = 2; n <= Math.sqrt(input); n++) {
            if (input == n) {
                //结束分解
                break;
            }
            //通过while循环完成判读
            // 被整数的新input与老n是否还存在整除关系
            //不满足跳出while循环,n+1
            while (input % n == 0) {
                input /= n;
                // 当数字可以进入循环的且两数字相等,则input等于1;
                if(input != 1) {
                    document.write(n + '*');
                } else {
                    document.write(n);
                }
            }

        }
        //1不是质数
        //4 = 2 * 2 *
        // 最后的"*"已经解决
        if (input != 1)
            document.write(input);

    </script>
</body>

</html>

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-20 23:05:48 | 显示全部楼层
<!DOCTYPE html>
<html>
<head>
        <title>5</title>
        <meta charset="utf-8">
        <script type="text/javascript">
                function getsome(){
                        var test=parseInt(document.getElementById("test").value);
                        var isp=document.getElementById("isp");
                        var mytest=new Array()
                        var num=test+"=";
                        someone(test);
                        for(var i=0;i<mytest.length;i++){
                                num+=mytest[i]+"*";}
                        isp.innerHTML=num.slice(0,-1);
                        function someone(test){
                                for(var i=2;i<=test;i++){
                                        if((test%i)==0){
                                                mytest.push(i);
                                                if((test/i)==1){
                                                        return 1;}
                                                else{
                                                        someone(test/i)
                                                        break;}
                                        }
                                }
                        }
                }

        </script>
</head>
<body>
        <input type="text" name="" id="test"><input type="button" value="输出"  name="" onclick="getsome()">
        <p id="isp"></p>
</body>
</html>        
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-23 12:03:53 | 显示全部楼层
emm
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-24 20:52:28 | 显示全部楼层
支持
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-8 15:02:01 | 显示全部楼层
nb
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-11 21:31:23 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-24 10:39:31 | 显示全部楼层
看思路
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 21:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表