PAT上分記(c++ + 完美過關)---1013---數素數

在這裏插入圖片描述

#include<iostream>
#include<math.h>
using namespace std;

int is_sushu(int n) {
	if (n == 2) {
		return 1;
	}
	else if (n == 1) {
		return 0;
	}
	for (int i = 2; i <= sqrt(n); i++) {
		if (n % i == 0) {
			return 0;
		}
	}
	return 1;
}

int main()
{
	int M, N, flag = 0, m_info = 0, n_info = 0, count = 0, i = 1, print_count = 0;
	cin >> M >> N;
	while (flag == 0) {
		if (is_sushu(i) == 1) {
			count++;
			if (count == M) {
				m_info = i;
			}
			if (count == N) {
				n_info = i;
				flag = 1;
			}
		}
		i++;
	}

	for (int j = m_info; j <= n_info; j++) {
		if (is_sushu(j) == 1) {
			print_count++;
			if (print_count % 10 == 0) {
				printf("%d\n", j);
			}
			else {
				if (j == n_info) {
					printf("%d", j);
				}
				else {
					printf("%d ", j);
				}
			}
		}
	}
	return 0;

}

這裏需要注意的還是一個循環的範圍的問題,求素數循環的方根值,不然就會超時。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章