⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prime.pro

📁 basic median filter simulation
💻 PRO
字号:
;-------------------------------------------------------------;+; NAME:;     PRIME; PURPOSE:;     Return an array with the specified number of prime numbers.; EXPLANATATION:;     This procedure is similar to PRIMES in the standard IDL distribution,;     but stores results in a common block, and so is much faster ;; CALLING SEQUENCE:;       p = prime(n); INPUTS:;       n = desired number of primes, scalar positive integer; OUTPUTS:;       p = resulting array of primes, vector of positive integers; COMMON BLOCKS:;       prime_com; NOTES:;       Note: Primes that have been found in previous calls are;         remembered and are not regenerated.; MODIFICATION HISTORY:;       R. Sterner  17 Oct, 1985.;       R. Sterner,  5 Feb, 1993 --- fixed a bug that missed a few primes.;       Converted to IDL V5          March 1999;; Copyright (C) 1985, Johns Hopkins University/Applied Physics Laboratory; This software may be used, copied, or redistributed as long as it is not; sold and this copyright notice is reproduced on each copy made.  This; routine is provided as is without any express or implied warranties; whatsoever.  Other limitations apply as described in the file disclaimer.txt.;-;------------------------------------------------------------- 	function prime,n, help=hlp 	common prime_com, max, pmax 	if (n_params(0) lt 1) or keyword_set(hlp) then begin	  print,' Return an array with the specified number of prime numbers.'	  print,' p = prime(n)'	  print,'   n = desired number of primes.    in'	  print,'   p = resulting array of primes.   out'	  print,' Note: Primes that have been found in previous calls are'	  print,'   remembered and are not regenerated.'	  return, -1	endif 	if n_elements(max) eq 0 then max = 0	; Make MAX defined.	if n le max then return, pmax[0:n-1]	; Enough primes in memory.	p = lonarr(n)				; Need to find primes.	if max eq 0 then begin			; Have none now. Start with 8.	  p[0] = [2,3,5,7,11,13,17,19]	  if n le 8 then return, p[0:n-1]	; Need 8 or less.	  i = 8					; Need more than 8.	  t = 19L				; Search start value.	endif else begin			; Start with old primes.	  p[0] = pmax				; Move old primes into big arr.	  i = max				; Current prime count.	  t = p[max-1]				; Biggest prime so far.	endelse loop:	if i eq n then begin			; Have enough primes.	  max = n				; Count.	  pmax = p				; Array of primes.	  return, p				; Return primes.	endifloop2:	t = t + 2				; Next test value, t.	it = 1					; Start testing with 1st prime.loop3:	pr = p[it]				; Pick next test prime.	pr2 = pr*pr				; Square it.	if pr2 gt t then begin			; Selected prime > sqrt(t)?	  i = i + 1				; Yes, count	  p[i-1] = t				; and store new prime.	  goto, loop				; Go check if done.	endif	if pr2 eq t then goto, loop2		; Test number, t, was a square.	if (t mod pr) eq 0 then goto, loop2	; Curr prime divides t.	it = it + 1				; Check next prime.	goto, loop3	end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -