PTA_循环结构

本文介绍了几个编程挑战,涉及循环结构的应用。包括寻找梅森数、完数、解决韩信点兵问题、猴子吃桃问题、龟兔赛跑、国王的金币、换硬币的方案和锤子剪刀布游戏的策略。每个问题都有对应的C++代码实现,旨在锻炼读者的编程思维和算法设计能力。
摘要由CSDN通过智能技术生成

  7-12 梅森数​​​​​​

形如2n−1的素数称为梅森数(Mersenne Number)。例如22−1=3、23−1=7都是梅森数。1722年,双目失明的瑞士数学大师欧拉证明了231−1=2147483647是一个素数,堪称当时世界上“已知最大素数”的一个记录。

本题要求编写程序,对任一正整数n(n<20),输出所有不超过2n−1的梅森数。

输入格式:

输入在一行中给出正整数n(n<20)。

输出格式:

按从小到大的顺序输出所有不超过2n−1的梅森数,每行一个。如果完全没有,则输出“None”。

输入样例:

6

输出样例:

3

7

31

代码:

#include <stdio.h>

#include <math.h>

int main(){

 int i,a,j,b;

 scanf("%d",&a);

 for(j=2;j<=a;j++)

 {

 b=pow(2,j)-1;

 for(i=2;i<b;i++)

    {

  if(b%i==0)

  break;

 }

 if(b==i)

  {printf("%d\n",b);}

 

 } if(a==1)

  printf("None");

}

 

7-13 输出小于n的所有完数

本题要求从小到大输出小于n(2≤n≤10000)的所有完数。所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。

输入格式:

输入在一行中给出n(2≤n≤10000)的值。

输出格式:

输出完数,每个数占6位。如果小于n的完数不存在,则输出"NONE"。

输入样例:

1000

输出样例:

     6 28 496

代码:

#include <stdio.h>

int main(){

int n,i,j,k;

scanf("%d",&n);

for(i=1;i<n;i++){

for(k=0,j=1;j<i;j++){

if(i%j==0)

k+=j;

}

if(i==k)

printf("%6d",i);

}

if(n<=6)

printf("NONE");

}

7-23 韩信点兵

在中国数学史上,广泛流传着一个“韩信点兵”的故事&#x

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值