如题:
输入一个正整数,输出它的所有质数因子(如180的质数因子为2、2、3、3、5)

解决方案 »

  1.   

    这是C里求质因子的算法, 自己研究下吧,写到js里也不是问题。main()
    {
    int n,i;
    printf("\nplease input a number:\n");
    scanf("%d",&n);
    printf("%d=",n);
    for(i=2;i<=n;i++)
     {
      while(n!=i)
      {
       if(n%i==0)
       { printf("%d*",i);
        n=n/i;
       }
       else
        break;
      }
    }
    printf("%d",n);}
      

  2.   

    <script>
    function getPrimGens(a)
    {
        var arr = getGens(a);
        var c = [];
        for(var i=0;i<arr.length;i++){
            var t = getGens(arr[i]);
            if(t.length==0) c.push(arr[i]);
        }
        return c;
        
    }function getGens(a)
    {
        var arr = [];
        var n = a/2 + 1;
        for(var i=2; i<n; i++){
            if(a%i == 0) arr.push(i)
         
        }
        return arr;
    }alert(getPrimGens(180));//2,3,5
    </script>
      

  3.   

    var num = 180;
    var ret = [];
    var prim = 2;
    while( num > 1 ){
      while(!isPrim(prim)){
        ++prim;
      }
      while(num%prim==0){
        num/=prim;
        ret.push(prim);
      }
    }
      

  4.   

    试试这个
    <script>
    function getPreGens(a)
    {
        var arr = [];
        var n = Math.floor(a/2)+ 1;
        var t = n;
        var i;
        while(1==1)
        {
            if(i==t)
            {
                arr.push(a);
                break;
            }
            
            for(i=2; i<t; i++)
            {
                if(a%i == 0) 
                {
                    arr.push(i);
                    a = a/i;
                    t = Math.floor(a/2 )+ 1;
                    break;
                }
            }
        }
        return arr;
        
    }alert(getPreGens(180));//2,2,3,3,5</script>
      

  5.   

    function yingzi(x){
        var arr=new Array();
        var j=0;
        for(var i=0;i<x;i++){
         arr[j]=i;
         j++;
       }
       return arr;
    }
    function wanahu(x){
       for(var i=1;i<x;i++){
       var temp=yinzi[i];
       var tempnum=0;
        for(var j=0;j<temp.length;j++){
            tempnum+=parseInt(temp[j]);
         }
         if(tempnum==i){
           document.write(i+"<br/>");
         }
       }
    }
    wanshu(1000);