首页 > 代码库 > SICP 计算机程序的构造和解释 1.21 寻找因子 Scheme、C++实现

SICP 计算机程序的构造和解释 1.21 寻找因子 Scheme、C++实现

寻找素数因子

要求用书中的smallest-divisor过程找出199, 1999, 19999的最小因子。

Scheme Code

主要流程:

定义寻找素数的过程

如果2的平方即4,大于测试值,那么它肯定是素数

如果n能和2整除,那么不是素数,最小因子是2

如果不是,回到过程find-div,再试试能不能与2+1整除,循环

 

#lang racket(define (square x)  (* x x));定义筛选(define (smallest-div n)  (find-div n 2))(define (find-div n td)  (cond ((> (square td) n) n)        ((divd? td n) td)        (else (find-div n (+ td 1))))) (define (divd? a b)  (= (remainder b a) 0));primer过程,如果满足条件那么等于true,否则false,用#t和#f表示,类似bool(define (primer? n)  (= n (smallest-div n)))

测试:

 

IN

 

(primer? 3)

 

(smallest-div 199)

 

(smallest-div 1999)

 

(smallest-div 19999)

 

OUT

 

#t

 

199

 

1999

 

7

 

C++ Code

 

int square(int x){    int sum = x*x;    return sum;}int find_div(int n,int td){    if (square(td)>n)    {       return n;    }    else if (!(n%td))    {       return td;    }    else    {       find_div(n, td 1);    }}int _tmain(int argc, _TCHAR* argv[]){    int a, b,real;    cin >> a >> b;    real = find_div(a, b);    cout << real << endl;    return 0;}

 

 

 

 

 

 

 

 

 

SICP 计算机程序的构造和解释 1.21 寻找因子 Scheme、C++实现