Elec Days

電子工作やelectric的なこと、日常の出来事について、紹介していきます。
Elec Days TOP  >  スポンサー広告 >  プログラミング  >  素数 >  【C言語】素数を求めるプログラム「解説」

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[ --/--/-- --:-- ] スポンサー広告 | TB(-) | CM(-)

【C言語】素数を求めるプログラム「解説」

こんにちは

今日は、前回投稿したプログラムの説明をしたいと思います。
「こんなの読まなくても理解できるぜ!」という方は、読み飛ばしてもかまいません。
(参考:【C言語】素数を求めるプログラム
#include <stdio.h>
#include <time.h>
 ↑
これは、ファイルの読み込みを宣言しているところです。


int main(void)
{
   int x;
   int y;

   int i;

   int num[10000];
   int m = 0;

   int a = 0;

   int b;

   FILE *fp;

   time_t t;

   char str[50];
 ↑ ここは、変数を宣言しています。
一番上の「int main(void)」は、「ここからはプログラムの主な場所だよ」ということを言っています。


   for(i=x; i<=y; i++){
      int z;

      for(z=2; z          if(i%z == 0)
            break;
         else if(z == i-1){
            num[m] = i;
            m++;
         }
      }
   }
 ↑
ここで、本題の素数の計算をしています。

まず、「for(i=x; i<=y; i++)」の中で、選択した範囲の数を順番に計算してます。
「for」は繰り返しのための関数です。

そして、次の「for(z=2; z<i; z++)」の中で、その数を2から順番に割っていってます。
「if(i%z == 0)」であまりを判断し、あまりが0だったらその数は素数ではないことになる、
あまりが0でない場合は次の数で割ってみる、という作業をやっています。


printf("選択された範囲の中に素数は%d個ありました。\n", m);

num[m++] = 0;

while(num[a] != 0){
printf("%d\n", num[a]);
a++;
}
 ↑
ここでは、素数を表示させるということをやっています。
「printf」は文字を画面に出力するための関数です。
また、「while(num[a] != 0)」の中で、保管しておいた素数のデータを表示させています。


printf("素数をファイルに出力しますか?出力する場合は半角で0を入力してください。プログラムを終了させるには半角で1を入力してください。\n(ファイルはこの実行ファイルがあるフォルダーに作られます。)\n");

scanf("%d", &b);

if(b == 0){
sprintf(str, "%ld", time(&t));
printf("%s\n", str);
fp = fopen(str, "w");

if(fp == NULL){
printf("ファイルを作成できませんでした。\n");
return 1;
}
else{
a = 0;

fprintf(fp, "選択された範囲の中に素数は%d個ありました。\n", m);

num[m++] = 0;

while(num[a] != 0){
fprintf(fp, "%d\n", num[a]);
a++;
}
fclose(fp);
 ↑
ここでは、ファイルに出力しています。

「sprintf(str, "%ld", time(&t));
printf("%s\n", str);      」
では、ファイル名に時刻を設定するようにしています。
また、「fprintf」では、ファイルに出力させるようにしています。




ざっと言うとこんな感じです。

「ここをこうしたらもっといい」などの意見がありましたら、いつでもお願いします。

また、「あんなプログラムを作ってほしい」というリクエストにもできるだけお応えしますので、コメント欄などで連絡お願いします。


ソースファイルはこちら(sosu.c)
(テキストメモで開くこともできます。)
※ブラウザーで表示すると表示が崩れる可能性がありますので、ダウンロードしてからご覧ください。


では。


追記

【C言語】素数を求めるプログラム_改良版を追加しました。

(2/2)
【C言語】素数を求めるプログラム Ver.3 (現在最新) を追加しました。
関連記事
[ 2011/01/12 18:31 ] プログラミング 素数 | TB(0) | CM(0)
コメントの投稿












管理者にだけ表示を許可する
トラックバック
この記事のトラックバックURL

プロフィール

elecho

Author:elecho
 
ElecDays にようこそ!!

趣味は、電子的なもの(電子工作やコンピュータ)なので、そういうものについて書くと思います。
あと、学生です。

よろしくお願いします。



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。