1. 程式人生 > 其它 >列舉演算法:合數世紀探求。定義一個世紀的100個年份數字中不存在一個素數(即100個年份數字全為合數)的世紀為合數世紀。探索最早的合數世紀。

列舉演算法:合數世紀探求。定義一個世紀的100個年份數字中不存在一個素數(即100個年份數字全為合數)的世紀為合數世紀。探索最早的合數世紀。

技術標籤:演算法習題演算法c++

合數世紀探求。定義一個世紀的100個年份數字中不存在一個素數(即100個年份數字全為合數)的世紀為合數世紀。探索最早的合數世紀。

思路:
判斷連續100年有幾個素數,幾個合數,不滿足條件就一直往後推,直到s==50即可,輸出答案。

程式碼:

#include<time.h>
#include<stdio.h>
#include<math.h>
int main() {
	double op,ed;
	double time;
	op=clock();


	long a,b,k;
	int s,x;
	a=1;
	while (1
) { a++; s=0; for(b=a*100-99; b<=a*100-1; b+=2) { x=0; for(k=3; k<=sqrt(b); k+=2) { if(b%k==0) { x=1; break; } } if(x==0) break; s=s+x; } if(s==50) { printf("最早出現的合數世紀為 %ld 世紀!\n",a); break; } } ed=clock(); time=ed-op; printf("\n"
); printf("time=%lfms\n",time); return 0; }

結果:
在這裡插入圖片描述