標籤:
尋找素數因子
要求用書中的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;}
電腦程式的構造和解釋 1.21 尋找素數因子