2013年8月18日日曜日

素因数分解プログラム


akira@dynabookAZ:~$ cd arm1304
akira@dynabookAZ:~/arm1304$ gcc -o b012 b012.c -lm
akira@dynabookAZ:~/arm1304$ ./b012
Favorite Number: 45
45=3*3*5
46=2*23
47=47
48=2*2*2*2*3
49=7*7
50=2*5*5
51=3*17
52=2*2*13
53=53
54=2*3*3*3
55=5*11
56=2*2*2*7
57=3*19
58=2*29
59=59
60=2*2*3*5
akira@dynabookAZ:~/arm1304$ ./b012
Favorite Number: 123456789
123456789=3*3*3607*3803
123456790=2*5*37*333667
123456791=123456791
123456792=2*2*2*3*59*87187
123456793=157*786349
123456794=2*19*113*28751
123456795=3*5*7*11*89*1201
123456796=2*2*30864199
123456797=73*1691189
123456798=2*3*3*3*3*769*991
123456799=29*4257131
123456800=2*2*2*2*2*5*5*154321
123456801=3*13*23*137633
123456802=2*7*61*144563
123456803=123456803
123456804=2*2*3*10288067
akira@dynabookAZ:~/arm1304$



#include <stdio.h>

main(){
   long a,b,c,m,s,i;
   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";

   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;
      }
   }
}

0 件のコメント:

コメントを投稿