Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 软件时空 > 软件相关 > 最小正剩余
【标  题】:最小正剩余
【关键字】:
【来  源】:http://www.cublog.cn/u/20/showart.php?id=147763

最小正剩余

Your Ad Here Z/(m) = {0,1,...,m-1}.其中 0, 1,..., m-1称为模 m 的最小非负剩余。最小非负剩余与带余除法有关。带余除法告诉我们,任意 m,n in Z,存在 q,r in Z 使得
n = mq + r, 其中 0<=r<|m|
我只关心 m>0 的情况,所以
n = mq + r, 其中 0<=r<m
q=[n/m]。按照数学上的传统记号,[x]表示不超过 x 的整数集中最大元,也就是计算机文献中常见的``向下取整''。

给定了 n,m 后,用 c 语言可以很容易地求出 q,r.
q = n/m
r = n%m
有时候,我们想用 1,2,...,m 作为 Z/(m) 的代表元,这组代表元称为最小正剩余。可以得到相应的带余除法:
n = mq'+r', 0<r<=m
当 n>=m 时,
q' = [(n-1)/m]
r' = ((n-1) mod m) + 1
在 c 语言里,q', r' 可以表示为:
q' = (n-1)/m
r' = ((n-1) % m)+1


在以前的一个帖子里,我们讨论了 Josephus 问题。利用最小正剩余的表达式,可以得到一个相对清晰的公式:

记 Next 为 N,则
  1. N <= r,则
    J(n, m) = qm + N
  2. N > r
    J(n,m) = (N-r-1)/(m-1) + N-r
这个实际上就是 yuxh 给出的公式,只是推导的方法略有不同。


以前没有时间,现在有空了,最近学着写了几个vb的东西:【上一篇】
程序员四大忌 你该如何避免呢:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • 妙用Asp.Net中的HttpHandler
  • XDesignerLib 中间件说明
  • Index of Documentation for Linux
  • Visual studio 2005下xml的xsl转换调试
  • 散列学习笔记
  • 思科推出3G全面解决方案
  • 谈软件公司的技术管理
  • 什么是RSS?RSS及其发展历程
  • VBScript 中Initialize 事件
  • Illustrator 8.0 入门基础教程(7)
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.