c#-十进制分数中最长的重复周期-错误还是误解?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-十进制分数中最长的重复周期-错误还是误解?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2190字,纯文字阅读大概需要4分钟。
内容图文
![c#-十进制分数中最长的重复周期-错误还是误解?](/upload/InfoBanner/zyjiaocheng/673/094ac62de8954c5aaa66e69965433f9d.jpg)
这相当“算术”,但我在这里发布是因为这是欧拉计画的问题,&我的工作代码大概包含错误.
Determing longest repeating cycle in a decimal expansion问题使用对数解决了这个问题,但是我对用简单的蛮力解决感兴趣.更准确地说,我有兴趣了解为什么我的算法和代码未返回正确的解决方案.
该算法很简单:
>复制“长除法”,
>在每一步记录除数和余数
>当重复除数/余数元组时,推断小数表示将重复.
根据要求,这是私人领域
private int numerator;
private int recurrence;
private int result;
private int resultRecurrence;
private List<dynamic> digits;
这是代码:
private void Go()
{
foreach (var i in primes)
{
digits = new List<dynamic>();
numerator = 1;
recurrence = 0;
while (numerator != 0)
{
numerator *= 10;
// quotient
var q = numerator / i;
// remainder
var r = numerator % i;
digits.Add(new { Divisor = q, Remainder = r });
// if we've found a repetition then break out
var m = digits.Where(p => p.Divisor == q && p.Remainder == r).ToList();
if (m.Count > 1)
{
recurrence = digits.LastIndexOf(m[0]) - digits.IndexOf(m[0]);
break;
}
numerator = r;
}
if (recurrence > resultRecurrence)
{
resultRecurrence = recurrence;
result = i;
}
}}
当测试整数< 10和< 20我得到正确的结果;而且我也正确地确定了i的值.但是,我得到的十进制重新设置是不正确的-我计算i-1,而正确的结果要少得多(类似于i-250). 因此,大概我是遇到了编程错误(找不到)或逻辑错误. 我很困惑,因为对我来说感觉就像multiplicative group over p,其中会有p-1个元素.我确定我缺少了什么,有人可以提供建议吗?
编辑
我将不包括我的素数代码-这是不相关的,正如我在上面解释的那样,我正确地标识了i的值(从内存中它是983),但是在为resultRecurrence获取正确的值时遇到了问题.
解决方法:
I’m confused because it feels like a multiplicative group over p to me, in which there would be p-1 elements. I’m sure I’m missing something, can anyone provide suggestions?
关.
对于除2和5(除以10)之外的所有素数,余数序列通过以1开头并转换为
remainder = (10 * remainder) % prime
因此,第k个余数为10k(模素数),余数集形成以模素数[1]为模的非零余数组的子集.循环周期的长度是该子组的顺序,也称为10模素数的顺序.
非零余数模素数组的阶数是素数1,费马特有一个定理:
Let
G
be a finite group of orderg
andH
be a subgroup ofG
. Then the orderh
ofH
dividesg
.
因此,周期的长度始终是素数1的除数,有时它是素数1的除数,例如7或19.
[1]对于n质数为10的复合数,这将是n的质数为n的余数模.
内容总结
以上是互联网集市为您收集整理的c#-十进制分数中最长的重复周期-错误还是误解?全部内容,希望文章能够帮你解决c#-十进制分数中最长的重复周期-错误还是误解?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。