C++的题,帮忙做!

来源:百度知道 编辑:UC知道 时间:2024/05/22 19:10:43
有52张扑克牌,使它们全部正面朝上。从第2张牌开始,把凡是2的倍数位置上的牌翻成正面朝下;接着从第3张牌开始,把凡是3的倍数位置上的牌正面朝上的翻成正面朝下,正面朝下的翻成正面朝上;接着从第4张牌开始,把凡是4的倍数位置上的牌按此规律翻转;以此类推,直到第1张要翻的牌是第52张牌为止。统计最后有几张牌正面朝上,并打印出它们的位置。

//解法1
#include <iostream.h>
int buzhengchu(int n)
{ for(int i=2;i<n;i++)
if(n%i==0)
return 0;
return 1;
}
int bzc(int n)
{ for(int i=2;i<=26;i++)
if(n%i==0)
return 0;
return 1;
}

void main()
{ for(int i=1;i<=52;i++)
{ if(i<=26&&buzhengchu(i)||bzc(i))
cout<<i<<ends;
}
}
//解法2
析:“ 直到第1张要翻的牌是第52张牌为止。”是把以26为倍数的牌翻转时的情况。26以前的数每个都有作过除数。1-52中只有不能被整除的才正面向上。换一个角度思考,这就是求1-52间的素数和开始的1的集合的问题。
#include<iostream.h>
int sushu(int n)
{ for(int i=2;i<=n/2;i++)
if(n%i==0)
return 0;
return 1;
}
void main()
{ for(int i=1;i<=52;i++)
if(sushu(i))
cout<<i<<ends;
}

哇靠,你太狠了,这么长的题目,而且扑克有52的倍数么?

0分不管