纸牌问题2的倍数番一次以此类推到52的基数

纸牌问题2的倍数番一次以此类推到52的基数

问题描述:

任务:编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次, 直到最后一张牌;...再依次5的倍数的牌翻一次,6的,7的 直到 以52为基数的 翻过,输出:这时正面向上的牌有哪些?

双层循环,判断是否整除并且计数。最后的结果就是正面数。

 用a数组记录翻了每张牌翻了多少次,最后是偶数倍的说明正面朝上。

#include<stdio.h>
int main()
{
    int i,j,cnt=0,n=2,a[53]={0};
    while(n!=52){
        for(i=1;i<=52;i++){
            if(i%n==0){
                a[i]++;

            }
        }
        n++;
    }
    for(i=1;i<=52;i++){
        if(a[i]%2==0){
            cnt++;
        }
    }
    printf("%d\n",cnt);

}