2013年12月22日日曜日

素因数分解プログラム(再考)

akira@dynabookAZ:~/arm1312$ ./d001
Favorite Number: 7
7=7
8=2*2*2
9=3*3
10=2*5
11=11
12=2*2*3
13=13
14=2*7
15=3*5
16=2*2*2*2
17=17
18=2*3*3
19=19
20=2*2*5
21=3*7
22=2*11
akira@dynabookAZ:~/arm1312$ ./d001
Favorite Number: 10000
10000=2*2*2*2*5*5*5*5
10001=73*137
10002=2*3*1667
10003=7*1429
10004=2*2*41*61
10005=3*5*23*29
10006=2*5003
10007=10007
10008=2*2*2*3*3*139
10009=10009
10010=2*5*7*11*13
10011=3*47*71
10012=2*2*2503
10013=17*19*31
10014=2*3*1669
10015=5*2003
akira@dynabookAZ:~/arm1312$ ./d001
Favorite Number: 12345678
12345678=2*3*3*47*14593
12345679=37*333667
12345680=2*2*2*2*5*154321
12345681=3*1049*3923
12345682=2*1063*5807
12345683=7*103*17123
12345684=2*2*3*13*79139
12345685=5*11*224467
12345686=2*251*24593
12345687=3*3*19*23*43*73
12345688=2*2*2*31*67*743
12345689=17*751*967
12345690=2*3*5*7*58789
12345691=59*209249
12345692=2*2*3086423
12345693=3*71*149*389
akira@dynabookAZ:~/arm1312$ cat d001.c
#include <stdio.h>

main(){
   long a,b,c,m,s,i,e,f,g;
   char s1[20]="%s";
   char s2[20]="Favorite Number: ";
   char s3[20]="%ld\n";
   char s4[20]="%ld*";
   char s5[20]="%ld=";
   char s6[20]="%ld";
   char s7[20]="Kake Over\n";
   char s8[20]="Number Over\n";
   char s9[20]="test1\n";
   char s10[20]="test2\n";
/*
   a=1;
   b=2;
   c=3;
   m=4;
   s=5;
   i=6;
   e=7;
   f=8;
   g=9;
   s1[0]='%';
   s2[0]='F';
   s3[0]='%';
   s4[0]='F';
   s5[0]='%';
   s6[0]='F';
   s7[0]='%';
   s8[0]='F';
   s9[0]='%';
   s10[0]='F';
 */
   printf(s1,s2);
   scanf(s6,&a);

   if(a>=0x7ffffff0) b=0x7ffffffe;
   else              b=a+15;

   for(m=a; m<=b; m++){
      s=m;
      printf(s5,s);
      i=2;
      while(i<=s){
         if(s<i*i){
            printf(s3,s);
            goto F1;
         }
         if(s%i==0){
            s/=i;
            printf(s4,i);
            i=2;
         }
         else{
            if(i==2) i++;
            else     i+=2;
            if(i>=0x0000b504){
               printf(s1,s7);
               goto F1;
            }
         }
      }
F1:i=i;

      if(m>=0x7ffffffe){
         printf(s1,s8);
         return;
      }
   }
}

akira@dynabookAZ:~/arm1312$

0 件のコメント:

コメントを投稿