第二章 分支和循环(5)

【例题】打印从1000到2000年的闰年

闰年:

int main() {
	int year = 1000;
	int count = 0;
	for(;year <=2000;year++) {
		if((year % 4 == 0 && year%100) || year%400 == 0) {
			count++;
			printf("%d ", year);
		}
	}
	printf("%d ", count);
	return 0;
}

【例题】打印100-200之间的素数

素数:只能被1和它本身除的树

博客《素数求解的n种境界》

int main() {
	int num = 100;
	int count = 0;
	for (; num <= 200; num++) {
		int i;
		for (i = 2; i < num; i++) {
			if (num % i == 0)
				break;
		}
		if (i == num) {
			printf("%d ", num);
			count++;
		}
	}
	printf("\\n%d", count);
	return 0;
}

算法优化:

int main() {
	int num = 101;
	int count = 0;
	for (; num <= 200; num+=2) {
		int i;
		for (i = 2; i <=sqrt(num); i++) {
			if (num % i == 0)
				break;
		}
		if (i > sqrt(num)) {
			printf("%d ", num);
			count++;
		}
	}
	printf("\\n%d", count);
	return 0;
}