みけCATのにっき(仮)
つれづれなるまゝに、日くらし、PCにむかひて、心に移りゆくよしなし事を、そこはかとなく書きつくれば、あやしうこそものぐるほしけれ。
(本当か!?)
出典

素数になる日を出力するプログラム

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

素数になる日を出力するプログラム

投稿記事 by みけCAT » 12年前

プログラム駅、素数のプログラムを作ってみた前
ここに掲載されているリストを出力するプログラムを、自分も作ってみました。

CODE:

#include 

int main(void) {
	int y,m,d;
	const int dmax[12]={31,28,31,30,31,30,31,31,30,31,30,31};
	y=2013;
	for(m=1;m0) {
				printf(" = 2");
				if(count>1)printf("^%d",count);
				equalprinted=1;
			}
			for(i=3;i*i0) {
					printf(" %c %d",equalprinted?'*':'=',i);
					if(count>1)printf("^%d",count);
					equalprinted=1;
				}
			}
			if(!equalprinted) {
				printf(": 素数");
			} else if(now2>1) {
				printf(" * %d",now2);
			}
			putchar('\n'); 
		}
	}
	return 0;
}
http://ideone.com/hPW4Np
実行すると、1秒程度でリストを出力できました。
最初のサイトでは、2時間程度かかるそうなので、効率が悪すぎることがわかります。
なぜこのようなことになってしまうのでしょうか。
最近のコンピュータでは、1秒あたりだいたい10,000,000回の計算をできると見積もれます。[要出典]
最初のサイトのプログラムのループ回数を計算してみると、
だいたい365*20,140,000=7,351,100,000となります。
7,351,100,000÷10,000,000=735.11となり、約12分で計算できるということになります…あれ?
見積もりが間違っていたか、もしくはPerlの遅さであると推測できます。

コメントはまだありません。