指定した桁までの完全数を計算して教えてくれるjs

Pocket

ごめんなさい……

まだデバッグ中ですが進捗の公開として一度投稿します。

何かもつれてるんですよ……

変数宣言しすぎてこんがらがってます。

function keisan(b){
  let a=1;//aは割られるもの
  let d=0;//dは割るもの
  let c=Math.pow(10,b-1);
  let e;
  let f;
  let g;
  let h=0;
  let j;
  let k=0;
  let l;
  if(c==0){
    c++;
  }
  while(a<c){
    while(d<a/2){ //素数あぶり出し
      d++;
      e=a%d;
      f=0;
      if(e==0){//素数死亡
        while(f<a/2){
          f++;
          g=a%f;
          if(g==0){
            let j=new Array()
            j[h]=f;
            h++;
        }}
        l=h;
        h=0;//ok
        f=0;
        while(f<l){//完全数抽出
          k=k+j[h];//h==undefind ここでエラー
          h++;
          f++;
          if(a==k){//完全数出力
          document.write(a + ",");
          a++;
          }}}}}}

上のものを後日いじったものが下になります。

function keisan(b){
  let a=1;//aは割られるもの
  let c=Math.pow(10,b-1);
  let e;
  let f=0;
  let g;
  let h=0;
  let j;
  let k=0;
  let l;
  if(c==0){
    c++;
    }
  while(a<c){
    while(f<a/2){ //素数あぶり出し
      f++;
      e=a%f;
      f=0;
      if(e==0){//素数死亡
        while(f<a/2){
          f++;
          g=a%f;
          if(g==0);
            j=Array();
            j.push(f);
            h++;
        }}
        l=h;
        h=0;//ok
        f=0;
        while(f<l){//完全数抽出、2周目でフリーズ
          k=k+j[h];
          h++;
          f++;
          if(a==k){//完全数出力
          document.write(a + ",");
          a++;
          }}}}}

追記:

もうだめぽ……

1から作り直します……