博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
I00025 寻找循环数
阅读量:7048 次
发布时间:2019-06-28

本文共 1275 字,大约阅读时间需要 4 分钟。

这个程序为之一。

这个问题是:找出所有n位数中的循环数。

一个n位数中的循环数是指该数乘以1到n之后,每位数字顺序发生移位,可以是移动若干位。

例如:142857是一个6位数的循环数,满足以下条件:

142857*1=142857
142857*2=285714
142857*3=428571
142857*4=571428
142857*5=714285
142857*6=857142

经过试算,这样的数并不好找,1到6位数中只有这一个。

给出的程序是按照自顶向下逐步细化的编程方法编写的顺序程序。对于程序员来说这样的编程训练是必要的,毕竟编写顺序程序是常有的事情。

程序如下:

/* 找出所有n位数中的循环数,该数乘以1到n的数后,每位数字顺序发生移位,可以是移动若干位。 * * 例如:142857是一个6位数的循环数,满足以下条件: * 142857*1=142857 * 142857*2=285714 * 142857*3=428571 * 142857*4=571428 * 142857*5=714285 * 142857*6=857142 * */#include 
// 判定n位数v乘以r是否为循环数,变量gethighdigit用于获取v的最高位int isCycle(int v, int n, int r, int gethighdigit){ int t, i, highdigit; t = v * r; // 乘积有进位则不是循环数 if(t / gethighdigit / 10 > 0) return 0; // 把最高位循环移位到最低位 for(i=1; i<=n; i++) { // 取出最高位 highdigit = t / gethighdigit; // 计算循环移位结果 t = t % gethighdigit * 10 + highdigit; // 循环移位后,某个数是原数的循环移位结果,则该数乘以r为循环数 if(t == v) return 1; } // 所有的循环移位都不是循环数,则原数不是循环数 return 0;}// 判定n位数v是否为循环数int isCycleNumber(int v, int n){ int i, gethighdigit=1; // 计算用于取最高位的数 for(i=1; i

输入6时,程序执行结果如下:

6

142857
142857*1=142857
142857*2=285714
142857*3=428571
142857*4=571428
142857*5=714285
142857*6=857142

转载于:https://www.cnblogs.com/tigerisland/p/7564760.html

你可能感兴趣的文章
springboot 详解 (二) crud
查看>>
从旅行箱到旅行美学品牌,ITO获数千万A轮融资
查看>>
Ant Design 3.16.0 发布,企业级 UI 设计语言
查看>>
less学习-混合
查看>>
Fast特征点的寻找和提取
查看>>
SpringBoot抛出ContextPath must start with xx and not end with xx异常
查看>>
JDK11新特性解读
查看>>
用JAVA写一个冒泡排序
查看>>
【网络新功能】NAT网关和弹性公网IP一键组合购买,开通效率提升一倍
查看>>
03.设计模式-单例模式
查看>>
轻松搞定RabbitMQ1:RabbitMQ与AMQP协议简介
查看>>
MySQL主从同步报error 1236
查看>>
php中一些提高性能的技巧
查看>>
前端开发——模块化(css模块化开发)
查看>>
mysql关于ibdata文件的理解
查看>>
Redis未授权访问漏洞的利用及防护
查看>>
SQL必备知识点
查看>>
一篇入门 -- Scala
查看>>
文件包含
查看>>
如何学会编辑文章快速收录?
查看>>