LIFE LOG(ここにはあなたのブログ名)

あつあつ備忘録

ソフトやハード、時にはメカの備忘録をまとめていきます

【C言語】素因数分解

f:id:AtsuyaKoike:20190424164141j:plain

素因数分解は入門教材に向いているので、高校の時に作ったプログラムを発掘してきました。
標準入出力、if文、配列、for文を使う基本的なソフトです。読んでみてください。

ソースコード

/*---------------------------------------------*/
// 2014/07/22
// Prime factorization
/*----------------------------------------------*/
#include<stdio.h>
int main(void)
{
    int num, i, cnt=0, data[1000];

    printf("Please Input Natural Number : ");
    scanf("%d", &num);
    if( num < 0 ) {
        return 1;
    }

    if( num == 1 ) {
        printf("%d\n", num);
    }
    else {
        printf("%d = ", num);
        for(i = 2; i <= num; i++ ) {
            if( num % i == 0 ) {
                data[cnt] = i;
                num = num / i;
                i = 1;
                cnt++;
            }
        }
    }
    for( i = 0; i < cnt; i++ ) {
        printf("%d", data[i]);
        if( cnt != i+1 )
            printf(" * ");
    }
    printf("\n");
    return 0;
}

コンパイル

$ gcc -o soinsu_bunkai soinsu_bunkai.c

実行結果

$ ./soinsu_bunkai 
Please Input Natural Number : 125         
125 = 5 * 5 * 5
$ ./soinsu_bunkai 
Please Input Natural Number : 1024
1024 = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2
$ ./soinsu_bunkai 
Please Input Natural Number : 1254
1254 = 2 * 3 * 11 * 19