1989年開業 技術士 佐伯英子(情報工学部門) 文部科学省登録番号 第22082号 日本技術士会会員 東大阪商工会議所会員

≫サンプルプログラム一覧 

オープンソース/C言語サンプルプログラム 素因数分解

●数値を入力して、素因数分解の結果を表示するプログラムです。
●long型整数の正の最大値(2の31乗-1=2147483647)までの計算ができますが、
 実際に最大値を入力すると、正しい動作をしない場合があります。
 プログラムが終了しない場合は、Ctrlキーを押しながらCを押して強制終了します。

 ≫ソースファイルのダウンロード: soinsuu01.c

【問題】
●いろいろな数を素因数分解して、結果を電卓で検証してみよう。
●変数nsの値が素数でない場合の、プログラムの流れを検証してみよう。



/****************/
/*  素因数分解  */
/****************/
#include <stdio.h>
#include <stdlib.h>

void  main( )
{
    char  c[128];
    int   n0,n;   // 整数
    int   ns=2;   // 素因数
    int   j;      // 乗数

    printf("\n★素因数分解★\n");
    printf("\n分解する整数: "); fflush(stdout);
    gets(c); n0=atoi(c);                    // 整数を入力

    for( n=n0,ns=2; n>=ns; ns++ )
      {
        for( j=0; n%ns==0; j++ )            // 割り切れる間繰り返す
         {
           n/=ns;
         }

        if ( j==0 ) continue;               // 1回も割り切れなかった

        printf("素因数:%d  乗数:%d\n",ns,j);
     }
}
   

※SSL暗号化通信対応

佐伯英子技術士事務所 〒542-0073 大阪市中央区日本橋 1-14-13 サンオフィス日本橋601  E-mail: info@saeki-pe.com