/*
*CopyRight (C)2014, Saluton+, All Rights Reserved.
*Filename:PassingBallGame.java
*Author: Saluton+ Version: 1.0 Date: 2014.08.09
*Description: 初等数学导论
* 题目描述:N个人玩传球游戏,开始时第一个人拿着球,每个人把球传给左手边的第K个人。
* 满足1<= K<= N/2。求K 的最大值,使得第一个人重新拿到球之前每个人都拿到过球?
* 解题思想:基于这样的一个事实:如果N和K不是互质数,存在公约数d且d不为1,那么经过
* (N/d)次传球后,球将重新回到第一个人手中。但是此时(N/d)<N,即球并非被传到了所有
* 手中。由此可知,如果要满足游戏规则,则gcd(N,K)= 1。
*/
public class PassingBallGame{
private int n;
private int k = 1;
public PassingBallGame(){
}
public PassingBallGame(int n){
this.n = n;
}
public int getK(){
return this.k;
}
// public void calculateValueOfK(){
// for(int i = n / 2; i > 1; i--){
// if(gcd(i, n) == 1){
// k = i;
// }
// }
// }
//
// public int gcd(int a, int b){
// if( a != 0){
// wh
初等数学导论:传球游戏
最新推荐文章于 2019-08-24 19:53:02 发布
本文介绍了初等数学中的一种传球游戏问题,分析了N个人传球,每次向左传给第K个人的情况。当N和K互质时,才能确保在第一个人再次拿到球之前每个人都拿到过球。给出了解决该问题的Java实现,通过计算欧几里得算法求最大公约数(gcd)来确定符合条件的K值。
摘要由CSDN通过智能技术生成