首页 > 代码库 > 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++实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。