Description
编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次, 直到最后一张牌;…再依次5的倍数的牌翻一次,6的,7的 直到 以52为基数的翻过,输出:这时正面向上的牌有哪些?
Source Code
#include<stdio.h>
int main()
{
int i,j; //i表示牌数 j表示基数
printf("正面向上的牌有:");
for(i=1;i<=52;i++)
{
int t=0; //t为翻牌次数,开始所有牌全正面向上t记为0
for(j=2;j<=i;j++)
{
if(i%j==0) //当牌数是基数的倍数时,翻牌一次
{
t++;
}
}
if(t%2==0) //如果t为偶数,则牌正面向上
{
printf("%d ",i);
}
}
printf("\n");
return 0;
}
Computational Results
Analyze
下图以部分牌为例,第一行✔表示所有牌正面朝上,✘表示牌正面朝下。
上述代码以 t 记翻牌次数,起始全正面朝上 t = 0,当 t 为偶数时正面朝上
即下图为例的1,4,9