数论 - 挑战编程

欢迎访问我的新博客:http://www.milkcu.com/blog/

原文地址:http://www.milkcu.com/blog/archives/number-theory-in-programming-challenges.html

原创:数论 - 挑战编程

作者:MilkCu

摘要:数论是一门研究整数性质的理论,是有趣和优美的数学分支。数论只是在编程中也被广泛应用,比如,素数的问题、最大公约数、最小公倍数、模运算等问题。

素数

前10个素数分别为:2, 3, 5, 7, 11, 13, 17, 19, 23, 29.

算术基本定理:每个整数表示成素数乘积的方式只有一种。

大于1且不是素数的整数称为合数(composite)。

素数是不仅无穷多的,而且还不算特别少。

不超过x的素数大约有 x/lnx 个。换句话说,大约每 lnx 个整数大约就有一个是素数。

整除性

求解最大公约数(greatest common divisor,也称gcd)最有趣的是欧几里得(Euclid)算法。

在PC110703欧几里德问题(http://blog.csdn.net/milkcu/article/details/23590217)中有详细的应用和说明。

最小公倍数 = 两数之积 / 最大公约数

即lcm(x, y) = xy / gcd(x, y)

模运算

加法

(x + y) mod n = ((x mod n) + (y mod n)) mod n

注意负数模n,可以通过加上n的整数倍来转换为正数模n。

乘法

xy mod n = (x mod n)(y mod n) mod n

乘方

x^y mod n = (x mod n)^y mod n

在PC110702 Carmichael数(http://blog.csdn.net/milkcu/article/details/23553323)中有个简单的应用。

习题

Light, more light - PC110701 - MilkCu的专栏 - 开灯与关灯
http://blog.csdn.net/milkcu/article/details/23543557

Carmichael Numbers - PC110702 - MilkCu的专栏 - Carmichael数
http://blog.csdn.net/milkcu/article/details/23553323

Euclid Problem - PC110703 - MilkCu的专栏 - 博客频道 - 欧几里德问题
http://blog.csdn.net/milkcu/article/details/23590217

Factovisors - PC110704 - MilkCu的专栏 - 博客频道 - 阶乘与整除
http://blog.csdn.net/milkcu/article/details/23592449

Summation of Four Primes - PC110705 - MilkCu的专栏 - 四素数之和
http://blog.csdn.net/milkcu/article/details/23599369

Smith Numbers - PC110706 - MilkCu的专栏 - Smith数
http://blog.csdn.net/milkcu/article/details/23607205

(全文完)

本文地址:http://blog.csdn.net/milkcu/article/details/23608607

posted @ 2014-04-13 17:18  MilkCu  阅读(469)  评论(0编辑  收藏  举报