素數簡單探索

2021-08-21 06:42:56 字數 3941 閱讀 1195

宣告:歡迎批評指正

寫作原因:今天看書,看到梅森素數,說到:大素數用於現代密碼設計領域,其原理是:將乙個很大的數分解成若干素數的乘積非常困難,但將幾個素數相乘卻容易得多。因此想用批處理寫乙個處理100000以內(10,100,1000,10000,100000)兩個素數相乘得到的最大數的程式,因此得此文

說明:1.素數的獲取用已知的1000以內的素數表獲得,參考**:

2.前提:10以內顯示1位數*1位數的最大數,100以內顯示1位數*2位數的最大數,1000以內顯示2位數*2位數的最大數,10000以內顯示2位數*3位數的最大數,100000以內顯示3位數*3位數的最大數。

4.批處理用記事本儲存為"生成素數.bat",儲存時選擇檔案型別為所有檔案,然後在檔名對話方塊中輸入生成素數.bat,把one.txt,two.txt,three.txt檔案與批處理檔案放到乙個目錄中,one.txt是1位數的素數,two.txt是兩位數的素數,three.txt是三位數的素數,可以修改**得到其他位數相乘的最大數

let's go!

生成素數.bat**:

@echo off

setlocal enabledelayedexpansion

echo $顯示2位數(10),3位數(100),4位數(1000),5位數(10000),6位數(100000)以內幾個素數相乘的最大值程式(10以內1位*1位,100以內1位*2位,1000以內2位*2位,10000以內2位*3位,100000以內3位*3位)$

echo.

set /a maxnum=0

set /a num1=0

set /a num2=0

set /p digits=請輸入多少以內(10,100,1000,10000,100000): 

if !digits! equ 10 (

for /f %%i in (one.txt) do (

for /f %%j in (one.txt) do (

set /a tmp=%%i*%%j

if !maxnum! equ 0 (

set /a maxnum=!tmp!

set /a num1=%%i

set /a num2=%%j

)if !tmp! gtr !maxnum! (

if !tmp! leq 10 (

set /a maxnum=!tmp!

set /a num1=%%i

set /a num2=%%j))

)))if !digits! equ 100 (

for /f %%i in (one.txt) do (

for /f %%j in (two.txt) do (

set /a tmp=%%i*%%j

if !maxnum! equ 0 (

set /a maxnum=!tmp!

set /a num1=%%i

set /a num2=%%j

)if !tmp! gtr !maxnum! (

if !tmp! leq 100 (

set /a maxnum=!tmp!

set /a num1=%%i

set /a num2=%%j))

)))if !digits! equ 1000 (

for /f %%i in (two.txt) do (

for /f %%j in (two.txt) do (

set /a tmp=%%i*%%j

if !maxnum! equ 0 (

set /a maxnum=!tmp!

set /a num1=%%i

set /a num2=%%j

)if !tmp! gtr !maxnum! (

if !tmp! leq 1000 (

set /a maxnum=!tmp!

set /a num1=%%i

set /a num2=%%j))

)))if !digits! equ 10000 (

for /f %%i in (two.txt) do (

for /f %%j in (three.txt) do (

set /a tmp=%%i*%%j

if !maxnum! equ 0 (

set /a maxnum=!tmp!

set /a num1=%%i

set /a num2=%%j

)if !tmp! gtr !maxnum! (

if !tmp! leq 10000 (

set /a maxnum=!tmp!

set /a num1=%%i

set /a num2=%%j))

)))if !digits! equ 100000 (

for /f %%i in (three.txt) do (

for /f %%j in (three.txt) do (

set /a tmp=%%i*%%j

if !maxnum! equ 0 (

set /a maxnum=!tmp!

set /a num1=%%i

set /a num2=%%j

)if !tmp! gtr !maxnum! (

if !tmp! leq 100000 (

set /a maxnum=!tmp!

set /a num1=%%i

set /a num2=%%j))

)))echo !num1!*!num2!=!maxnum!

pause

exit

one.txt**:23

5two.txt**:

1113

1719

2329

3137

4143

4753

5961

6771

7379

8389

three.txt**:

101103

107109

113127

131137

139149

151157

163167

173179

181191

193197

199211

223227

229233

239241

251257

263269

271277

281283

293307

311313

317331

337347

349353

359367

373379

383389

397401

409419

421431

433439

443449

457461

463467

479487

491499

503509

521523

541547

557563

569571

577587

593599

601607

613617

619631

641643

647653

659661

673677

683691

701709

719727

733739

743751

757761

769773

787797

809811

821823

827829

839853

857859

863877

881883

887907

911919

929937

941947

953967

971977

983991

997(全文完)

簡單素數表

描述 編寫程式,求任意兩個整數之間所有的素數。輸入 兩個整型資料,a,b,均大於等於2,小於等於1000,且a小於等於b 輸出 輸出兩個整數之間 包含自身 所有的素數 輸入樣例 2 11 輸出樣例 235 711 includeusing namespace std int main int a,b...

簡單素數篩

今天,我看了一些數學知識,而數論是比較主要的,而素數篩是其中重要的乙個,現在來介紹一下簡單素數篩 首先來,普及一下素數的概念 若乙個正整數無法被除了1和它本身之外的任何自然數整除,則稱該數為素數,也稱質數 或素數 否則稱該正整數為合數。通過介紹質數 下文統稱質數 的概念,我們知道了一種判斷質數的方法...

線性篩素數 探索中的不斷優化

工欲善其事必先利其器 首先素數是什麼?素數就是乙個數除了1和他本身沒有其他因數的數叫做質數。合數即為對立概念 當然,1既不是素數也不是合數 素因子是什麼?由尤拉函式得到結論 每乙個合數都可以寫成幾個素數相乘的形式,這些素數即為該合數的質因子 我們的目的是建立一張素數表 範圍可達1 1e8左右 以bo...