1964 - 素MM

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB


素数有很多神奇的性质,所以很美。我们知道一个日期将年、月、日按顺序连接在一起可以组成一个八位数,例如<span>2011</span>年<span>3</span>月<span>6</span>日可以写成<span>20110306</span>。我的某个<span>MM</span>的生日组成的数是一个素数。偶尔我叫她素<span>MM</span>,没人知道是啥意思,她自己也不知道。<span>O(∩_∩)O</span>哈哈<span>~</span>我心里可是真的美美的<span>(⊙o⊙)</span>哦!

<span> </span>嗯,什么?你的生日也是素数?你也想做“素<span>MM”</span>或者“素<span>GG”</span>?那好吧,不过我可是很小气的哦!只有你出生在<span>1988</span>年或者<span>1989</span>年我才让你做“素<span>MM”</span>或“素<span>GG”</span>。要不然,你把这两年里日期组成的数是素数的找出来也可以——没准还带你到浙大去“旅游”呢!

题目输入


题目输出


<span>1988</span>年与<span>1989</span>年,这两年里的日期所组成的素数。每个素数占一行。

输入/输出样例

输入格式

no input needed

输出格式

19880101
19880111
19880117
19880129
19880221
……

C语言解答

#include<stdio.h>
int prime(int n)
{
	for(int i = 2; i * i <= n; i++)
		if(n % i == 0)
			return 0;
		return 1;
}
int main()
{
	int i, j, k, s;
	int a[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
	for(i = 1988; i <= 1989; i++)
	{
		if((i % 4 == 0 && i % 100 != 0)||(i % 400) == 0)
			a[2] = 29;
		else
			a[2] = 28;
		for(j = 1; j <= 12; j++)
			for(k = 1; k <= a[j]; k++)
			{
				s = i * 10000 + j * 100 + k;
				if(prime(s))
					printf("%d\n", s);
			}
	}
}

C++解答

#include<stdio.h>
int prime(int n)
{
	for(int i = 2; i * i <= n; i++)
		if(n % i == 0)
			return 0;
		return 1;
}
int main()
{
	int i, j, k, s;
	int a[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
	for(i = 1988; i <= 1989; i++)
	{
		if((i % 4 == 0 && i % 100 != 0)||(i % 400) == 0)
			a[2] = 29;
		else
			a[2] = 28;
		for(j = 1; j <= 12; j++)
			for(k = 1; k <= a[j]; k++)
			{
				s = i * 10000 + j * 100 + k;
				if(prime(s))
					printf("%d\n", s);
			}
	}
}