SICP 1.2.6 素数检测

原创 2016年06月01日 20:54:33

O(n)的复杂度

(define (smallest-divisor n)
  (find-divisor n 2))

(define (find-divisor n test-divisor)
  (cond ((> (square test-divisor) n) n)
        ((divides? test-divisor n) test-divisor)
        (else (find-divisor n (+ test-divisor 1)))))

(define (divides? a b)
  (= (remainder b a) 0))

(define (prime? n)
  (= n (smallest-divisor n)))

(define (square x) (* x x)) 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

SICP学习笔记:最大公约数和素数检测

[0]最大公约数:求最大公约数的一个简单办法是欧几里德算法.对于a,b,GCD(a,b)= GCD(b,r)。b是a/b的余数证明如下:a = kb + r(1),设 m = GCD(a,b),a =...

js 特效 html 特效 素数检测

  • 2011年09月03日 22:19
  • 8KB
  • 下载

素数检测优化

  • 2017年07月28日 21:27
  • 3KB
  • 下载

素数检测算法

因为1既不是素数也不是合数,所以下面的实现代码中不考虑小于2的情况。1. 暴力求解最原始、最粗暴的方法就是从头到尾逐个进行检测,一旦遇到bool is_prime_1(int n) { for...
  • Holmofy
  • Holmofy
  • 2017年07月28日 21:21
  • 321

素数Vb检测

  • 2013年03月23日 17:40
  • 20KB
  • 下载

hdu4910 找规律+大素数检测

题意:给定一个数字,求出1 - n之间与他互质的数的乘积mod n            规律:对于 1,2,4,P^n, 2*P^n,答案为 N-1,其余情况都是1。也就是说,1,2,4,以及...

基于AKS素性检测的素数生成器

1.      解题思路AKS算法整体包括六个步骤,它本身相当于一个过滤器,只有经过各种条件筛选以后的数才是素数。步骤如图1所示。 Step1就是判断n是否是一个数的幂次方形式,如果是的话就表明n是...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SICP 1.2.6 素数检测
举报原因:
原因补充:

(最多只允许输入30个字)