X เป็นจำนวนเฉพาะ วิธีค้นหาจำนวนเฉพาะ


ปัญหา 2.30
กำหนดให้อาร์เรย์ A หนึ่งมิติประกอบด้วยตัวเลขธรรมชาติ แสดงจำนวนเฉพาะในอาร์เรย์

ก่อนอื่นให้ฉันเตือนคุณว่ามันคืออะไร หมายเลขเฉพาะ.

ตอนนี้เรามาดูงานกันดีกว่า โดยพื้นฐานแล้ว เราจำเป็นต้องมีโปรแกรมที่กำหนดจำนวนเฉพาะ และการเรียงลำดับองค์ประกอบและตรวจสอบค่าของมันนั้นเป็นเรื่องของเทคโนโลยี ในเวลาเดียวกัน เราไม่เพียงแต่นับเท่านั้น แต่ยังแสดงจำนวนเฉพาะของอาร์เรย์อีกด้วย

วิธีการหาจำนวนเฉพาะในภาษาปาสคาล

ฉันจะจัดเตรียมอัลกอริทึมโซลูชันพร้อมการวิเคราะห์โดยละเอียดในภาษา Pascal คุณสามารถดูวิธีแก้ปัญหาได้ในโปรแกรมตัวอย่างในภาษา C++

สำคัญ!
นี่คือจุดที่หลายคนอาจผิดพลาดได้ คำจำกัดความบอกว่าจำนวนเฉพาะมี เรียบสองที่แตกต่างกันตัวแบ่ง ดังนั้น จำนวน 1 จึงไม่ใช่จำนวนเฉพาะ (ก็ไม่ใช่จำนวนเฉพาะเช่นกัน เนื่องจาก 0 สามารถหารด้วยจำนวนใดก็ได้)

เราจะตรวจสอบว่าตัวเลขนั้นใช้เฉพาะหรือไม่ ซึ่งเราจะสร้างเอง ฟังก์ชันนี้จะคืนค่า TRUE หากตัวเลขเป็นจำนวนเฉพาะ

ในฟังก์ชันนี้ เราจะตรวจสอบก่อนว่าตัวเลขนั้นน้อยกว่าสองหรือไม่ หากเป็นเช่นนั้น ก็จะไม่ใช่จำนวนเฉพาะอีกต่อไป ถ้าตัวเลขเป็น 2 หรือ 3 แสดงว่ามันเป็นจำนวนเฉพาะและบางสิ่งก็สามารถทำได้ การตรวจสอบเพิ่มเติมไม่จำเป็น.

แต่ถ้าจำนวน N มากกว่าสาม ในกรณีนี้ เราจะวนไปตามตัวหารที่เป็นไปได้ทั้งหมด เริ่มตั้งแต่ 2 ถึง (N-1) ถ้าจำนวน N หารด้วยตัวหารบางตัวโดยไม่มีเศษลงตัว ก็ไม่ใช่จำนวนเฉพาะเช่นกัน ในกรณีนี้ เราขัดจังหวะการวนซ้ำ (เนื่องจากไม่มีประเด็นในการตรวจสอบเพิ่มเติม) และฟังก์ชันส่งคืน FALSE

ไม่มีประโยชน์ที่จะตรวจสอบว่าตัวเลขหารด้วยตัวมันเองหรือไม่ (นั่นคือเหตุผลว่าทำไมการวนซ้ำจึงอยู่ได้จนถึง N-1 เท่านั้น)

ฉันจะไม่นำเสนอฟังก์ชันที่นี่ - ดูในโปรแกรมตัวอย่าง

การแก้ปัญหา 2.30 ในภาษาปาสคาลงานของฉัน; //************************************************ **************** // ค่าคงที่ //****************************** ********* *********************************** นับ = 100; // จำนวนองค์ประกอบในอาร์เรย์ //****************************************** ********** ************************ // ฟังก์ชั่นและขั้นตอน //************ *********** *************************************** ** //****** ***************************************** * ******** // ตรวจสอบว่าตัวเลขเป็นจำนวนเฉพาะหรือไม่ // INPUT: N - หมายเลข // OUTPUT: TRUE - หมายเลข N เป็นจำนวนเฉพาะ FALSE - ไม่ใช่จำนวนเฉพาะ //********** **************************************** **** IsPrimeNumber(N: WORD) : ; var ฉัน: ; เริ่มต้น := TRUE;

N จาก 0..3: เริ่ม N ออก;จบ; จบ; i:= 2 ถึง (N-1) ทำถ้า (N i) = 0 แล้ว //ไม่ใช่จำนวนเฉพาะเริ่มต้น ผลลัพธ์:= FALSE; - จบ; จบ; ฉัน: คำ; X: คำ = 0;

ตอบ: ของคำ; //************************************************ **************** // โปรแกรมหลัก //****************************** ************************************ start //เติมอาร์เรย์ด้วยตัวเลขสำหรับ i:= 1 ถึง นับทำ A[i] := i;

//นับและเลือกจำนวนเฉพาะจากอาร์เรย์สำหรับ i:= 1 ถึง COUNT ถ้า IsPrimeNumber(A[i]) ให้เริ่ม (X);

บ่อยครั้งที่เด็กนักเรียนไม่ทราบวิธีตอบคำถามที่ง่ายที่สุดในวิชาคณิตศาสตร์ตั้งแต่แรกเห็นว่าจำนวนเฉพาะคืออะไร พวกเขามักจะสับสนระหว่างจำนวนเฉพาะกับจำนวนธรรมชาติ (นั่นคือ ตัวเลขที่ผู้คนใช้ในการนับวัตถุ ในขณะที่ในบางแหล่งจะขึ้นต้นด้วยศูนย์ และในบางแหล่งก็เริ่มต้นด้วยหนึ่ง) แต่นี่เป็นสองแนวคิดที่แตกต่างกันโดยสิ้นเชิง จำนวนเฉพาะคือจำนวนธรรมชาติ กล่าวคือ จำนวนเต็มและจำนวนบวกที่มากกว่า 1 และมีตัวหารธรรมชาติเพียง 2 ตัว ยิ่งกว่านั้น ตัวหารตัวใดตัวหนึ่งคือตัวเลขที่กำหนด และตัวที่สองคือหนึ่ง ตัวอย่างเช่น สามเป็นจำนวนเฉพาะ เนื่องจากไม่สามารถหารโดยไม่มีเศษด้วยจำนวนใดๆ นอกจากตัวมันเองและหนึ่ง

ตัวเลขประกอบ

สิ่งที่ตรงกันข้ามกับจำนวนเฉพาะคือจำนวนประกอบ พวกมันยังเป็นธรรมชาติเช่นกัน มากกว่าหนึ่ง แต่ไม่มีสองตัว แต่มีตัวหารมากกว่า ตัวอย่างเช่น ตัวเลข 4, 6, 8, 9 ฯลฯ นั้นเป็นจำนวนธรรมชาติ ประกอบ แต่ไม่ใช่จำนวนเฉพาะ อย่างที่คุณเห็น พวกนี้ส่วนใหญ่เป็นเลขคู่ แต่ไม่ใช่ทั้งหมด แต่ “สอง” เป็นจำนวนคู่และเป็น “จำนวนแรก” ในชุดจำนวนเฉพาะ

ลำดับต่อมา

ในการสร้างชุดของจำนวนเฉพาะ จำเป็นต้องเลือกจากจำนวนธรรมชาติทั้งหมด โดยคำนึงถึงคำจำกัดความของจำนวนนั้น กล่าวคือ คุณต้องกระทำการโดยขัดแย้งกัน จำเป็นต้องตรวจสอบจำนวนธรรมชาติบวกแต่ละตัวเพื่อดูว่ามีตัวหารมากกว่าสองตัวหรือไม่ เรามาลองสร้างอนุกรม (ลำดับ) ที่ประกอบด้วยจำนวนเฉพาะกัน รายการเริ่มต้นด้วยสอง ตามด้วยสาม เนื่องจากรายการจะหารด้วยตัวมันเองและหนึ่งเท่านั้น พิจารณาหมายเลขสี่ มันมีตัวหารนอกเหนือจากสี่กับหนึ่งหรือเปล่า? ใช่ จำนวนนั้นคือ 2 ดังนั้น 4 จึงไม่ใช่จำนวนเฉพาะ ห้ายังเป็นจำนวนเฉพาะ (หารด้วยจำนวนอื่นไม่ลงตัว ยกเว้น 1 และ 5) แต่หกหารลงตัว และโดยทั่วไป หากคุณติดตามเลขคู่ทั้งหมด คุณจะสังเกตได้ว่ายกเว้น "สอง" ไม่มีตัวใดที่เป็นจำนวนเฉพาะ จากนี้ เราสรุปได้ว่าจำนวนคู่ (ยกเว้น 2) ไม่ใช่จำนวนเฉพาะ การค้นพบอีกอย่าง: จำนวนทั้งหมดที่หารด้วยสามลงตัว ยกเว้นสามตัวนั้น ไม่ว่าจะเป็นเลขคู่หรือคี่ ก็ไม่ใช่จำนวนเฉพาะเช่นกัน (6, 9, 12, 15, 18, 21, 24, 27 ฯลฯ) เช่นเดียวกับตัวเลขที่หารด้วยห้าและเจ็ดลงตัว ฝูงชนทั้งหมดของพวกเขาก็ไม่ง่ายเช่นกัน มาสรุปกัน ดังนั้น ตัวเลขหลักเดียวแบบธรรมดาจะรวมเลขคี่ทั้งหมด ยกเว้น 1 และ 9 และแม้แต่ "สอง" ก็เป็นเลขคู่ ตัวหลักสิบ (10, 20,... 40 ฯลฯ) ไม่ใช่เรื่องง่าย จำนวนเฉพาะสองหลัก สามหลัก ฯลฯ สามารถกำหนดได้ตามหลักการข้างต้น: ถ้าไม่มีตัวหารอื่นนอกจากตัวมันเองและหนึ่งตัว

ทฤษฎีเกี่ยวกับคุณสมบัติของจำนวนเฉพาะ

มีวิทยาศาสตร์ที่ศึกษาคุณสมบัติของจำนวนเต็มรวมทั้งจำนวนเฉพาะด้วย นี่คือสาขาวิชาคณิตศาสตร์ที่เรียกว่าสูงกว่า นอกจากคุณสมบัติของจำนวนเต็มแล้ว เธอยังเกี่ยวข้องกับพีชคณิตและจำนวนเหนือธรรมชาติ ตลอดจนฟังก์ชันของต้นกำเนิดต่างๆ ที่เกี่ยวข้องกับเลขคณิตของตัวเลขเหล่านี้ ในการศึกษาเหล่านี้ นอกเหนือจากวิธีการเบื้องต้นและพีชคณิตแล้ว ยังใช้วิธีการวิเคราะห์และเรขาคณิตอีกด้วย โดยเฉพาะ “ทฤษฎีจำนวน” เกี่ยวข้องกับการศึกษาจำนวนเฉพาะ

จำนวนเฉพาะคือ "ส่วนประกอบ" ของจำนวนธรรมชาติ

ในวิชาเลขคณิตมีทฤษฎีบทหนึ่งเรียกว่าทฤษฎีบทพื้นฐาน จากข้อมูลดังกล่าว จำนวนธรรมชาติใดๆ ยกเว้น 1 ตัวสามารถแสดงเป็นผลคูณได้ โดยตัวประกอบที่เป็นจำนวนเฉพาะและลำดับของตัวประกอบไม่ซ้ำกัน ซึ่งหมายความว่าวิธีการแทนจะไม่ซ้ำกัน เรียกว่าการแยกตัวประกอบจำนวนธรรมชาติให้เป็นตัวประกอบเฉพาะ มีอีกชื่อหนึ่งสำหรับกระบวนการนี้ - การแยกตัวประกอบของตัวเลข จากนี้จึงจะเรียกว่าจำนวนเฉพาะได้” วัสดุก่อสร้าง”, “บล็อก” สำหรับสร้างจำนวนธรรมชาติ

ค้นหาเลขเด่น การทดสอบความเรียบง่าย

นักวิทยาศาสตร์หลายคนจากยุคต่างๆ พยายามค้นหาหลักการ (ระบบ) บางประการในการค้นหารายการจำนวนเฉพาะ วิทยาศาสตร์รู้จักระบบที่เรียกว่าตะแกรงแอตกิน ตะแกรงซุนดาร์ธรรม และตะแกรงเอราทอสเธเนส อย่างไรก็ตาม พวกเขาไม่ได้ให้ผลลัพธ์ที่มีนัยสำคัญใดๆ และเพื่อค้นหาจำนวนเฉพาะที่เราใช้ ตรวจสอบง่ายๆ- นักคณิตศาสตร์ยังสร้างอัลกอริธึมด้วย มักเรียกว่าการทดสอบปฐมภูมิ ตัวอย่างเช่น มีการทดสอบที่พัฒนาโดย Rabin และ Miller มันถูกใช้โดยนักเข้ารหัส นอกจากนี้ยังมีการทดสอบ Kayal-Agrawal-Sasquena อย่างไรก็ตาม แม้จะมีความแม่นยำเพียงพอ แต่ก็เป็นเรื่องยากมากในการคำนวณ ซึ่งทำให้ความสำคัญในทางปฏิบัติลดลง

เซตของจำนวนเฉพาะมีขีดจำกัดหรือไม่?

นักวิทยาศาสตร์ชาวกรีกโบราณ Euclid เขียนไว้ในหนังสือ “Elements” ของเขาว่าเซตของจำนวนเฉพาะนั้นไม่มีที่สิ้นสุด เขากล่าวว่า: “ลองจินตนาการดูว่าจำนวนเฉพาะมีขีดจำกัด จากนั้นลองคูณมันเข้าด้วยกัน แล้วบวกหนึ่งเข้าไปในผลคูณ จำนวนที่ได้รับจากการกระทำง่ายๆ เหล่านี้ไม่สามารถหารด้วยชุดจำนวนเฉพาะใดๆ ได้ เพราะส่วนที่เหลือจะเป็นหนึ่งเสมอ ซึ่งหมายความว่ายังมีจำนวนอื่นที่ยังไม่รวมอยู่ในรายการจำนวนเฉพาะ ดังนั้นสมมติฐานของเราจึงไม่เป็นจริง และชุดนี้ไม่มีขีดจำกัด นอกจากข้อพิสูจน์ของ Euclid แล้ว ยังมีสูตรที่ทันสมัยกว่าซึ่งมอบให้โดย Leonhard Euler นักคณิตศาสตร์ชาวสวิสในศตวรรษที่ 18 จากข้อมูลดังกล่าว ผลรวมส่วนกลับของผลรวมของตัวเลข n ตัวแรกจะเพิ่มขึ้นอย่างไม่จำกัดเมื่อจำนวน n เพิ่มขึ้น และนี่คือสูตรของทฤษฎีบทเกี่ยวกับการแจกแจงของจำนวนเฉพาะ: (n) เพิ่มขึ้นเมื่อ n/ln (n)

จำนวนเฉพาะที่ใหญ่ที่สุดคืออะไร?

ลีโอนาร์ด ออยเลอร์ คนเดียวกันสามารถหาจำนวนเฉพาะที่มีค่ามากที่สุดในช่วงเวลาของเขาได้ นี่คือ 2 31 - 1 = 2147483647 อย่างไรก็ตามภายในปี 2013 มีการคำนวณหมายเลขเฉพาะที่ใหญ่ที่สุดอีกรายการหนึ่งที่แม่นยำที่สุด - 2 57885161 - 1 เรียกว่าหมายเลข Mersenne ประกอบด้วยทศนิยมประมาณ 17 ล้านหลัก อย่างที่คุณเห็น จำนวนที่นักวิทยาศาสตร์ในศตวรรษที่ 18 พบนั้นน้อยกว่าจำนวนนี้หลายเท่า มันควรจะเป็นเช่นนั้น เพราะออยเลอร์ดำเนินการคำนวณนี้ด้วยตนเอง แต่คนร่วมสมัยของเราอาจได้รับความช่วยเหลือจาก คอมพิวเตอร์- ยิ่งไปกว่านั้น หมายเลขนี้ได้มาจากคณะคณิตศาสตร์ในแผนกหนึ่งของอเมริกา ตัวเลขที่ตั้งชื่อตามนักวิทยาศาสตร์คนนี้ผ่านการทดสอบความเป็นเอกของ Luc-Lemaire อย่างไรก็ตาม วิทยาศาสตร์ไม่ต้องการหยุดอยู่แค่นั้น มูลนิธิ Electronic Frontier Foundation ซึ่งก่อตั้งขึ้นในปี 1990 ในสหรัฐอเมริกา (EFF) ได้เสนอรางวัลเป็นเงินสำหรับการค้นหาจำนวนเฉพาะจำนวนมาก และหากจนถึงปี 2013 รางวัลนี้มอบให้กับนักวิทยาศาสตร์ที่สามารถค้นพบพวกมันได้จากทศนิยม 1 ถึง 10 ล้านทศนิยม ในปัจจุบันตัวเลขนี้ก็สูงถึงจาก 100 ล้านถึง 1 พันล้าน รางวัลมีตั้งแต่ 150 ถึง 250,000 ดอลลาร์สหรัฐ

ชื่อของจำนวนเฉพาะพิเศษ

ตัวเลขเหล่านั้นที่พบเนื่องจากอัลกอริธึมที่สร้างขึ้นโดยนักวิทยาศาสตร์บางคนและผ่านการทดสอบความเรียบง่ายเรียกว่าพิเศษ นี่คือบางส่วนของพวกเขา:

1. เมอร์สเซ่น.

4. คัลเลน.

6. มิลส์ และคณะ

ความเรียบง่ายของตัวเลขเหล่านี้ ซึ่งตั้งชื่อตามนักวิทยาศาสตร์ข้างต้น สร้างขึ้นโดยใช้การทดสอบต่อไปนี้:

1. ลุค-เลอแมร์

2. เปปิน่า.

3. รีเซล.

4. Billhart - Lemaire - เซลฟริดจ์ และคนอื่นๆ

วิทยาศาสตร์สมัยใหม่ไม่ได้หยุดอยู่แค่นั้น และในอนาคตอันใกล้นี้ โลกจะได้เรียนรู้ชื่อของผู้ที่สามารถรับรางวัล 250,000 ดอลลาร์ได้จากการค้นหาจำนวนเฉพาะที่มากที่สุด

คำตอบของ Ilya นั้นถูกต้อง แต่ไม่ละเอียดมาก อย่างไรก็ตาม ในศตวรรษที่ 18 เลขหนึ่งยังถือว่าเป็นจำนวนเฉพาะ ตัวอย่างเช่น นักคณิตศาสตร์ผู้ยิ่งใหญ่อย่างออยเลอร์และโกลด์บัค Goldbach เป็นผู้เขียนหนึ่งในเจ็ดปัญหาของสหัสวรรษ - สมมติฐานของ Goldbach สูตรดั้งเดิมระบุว่าเลขคู่ทุกจำนวนสามารถแสดงเป็นผลรวมของจำนวนเฉพาะสองตัวได้ ยิ่งไปกว่านั้น ในตอนแรก 1 ถูกนับว่าเป็นจำนวนเฉพาะ และเราจะเห็นว่า 2 = 1+1 นี่คือตัวอย่างที่เล็กที่สุดที่เป็นไปตามสูตรดั้งเดิมของสมมติฐาน ต่อมาได้มีการแก้ไขและกลายเป็นถ้อยคำ ดูทันสมัย: “เลขคู่ทุกตัวที่เริ่มต้นด้วย 4 สามารถแสดงเป็นผลรวมของจำนวนเฉพาะสองตัวได้”

เรามาจำคำจำกัดความกัน จำนวนเฉพาะคือจำนวนธรรมชาติ p ที่มีตัวหารตามธรรมชาติเพียง 2 ตัวเท่านั้น คือ p เองและ 1 ข้อพิสูจน์จากคำจำกัดความ: จำนวนเฉพาะ p มีตัวหารเฉพาะเพียงตัวเดียว - ตัว p เอง

ทีนี้สมมุติว่า 1 เป็นจำนวนเฉพาะ ตามคำนิยาม จำนวนเฉพาะจะมีตัวหารเพียงตัวเดียวเท่านั้น นั่นคือตัวมันเอง จากนั้นปรากฎว่าจำนวนเฉพาะใดๆ ที่มากกว่า 1 หารด้วยจำนวนเฉพาะที่ไม่ใช่จำนวนนั้นลงตัว (ด้วย 1) แต่จำนวนเฉพาะสองตัวที่ต่างกันจะหารกันไม่ได้เพราะว่า มิฉะนั้นจะไม่ใช่จำนวนเฉพาะ แต่เป็นจำนวนประกอบ และสิ่งนี้ขัดแย้งกับคำจำกัดความ ด้วยวิธีการนี้ ปรากฎว่ามีจำนวนเฉพาะเพียง 1 ตัวเท่านั้น - หน่วยนั้นเอง แต่นี่เป็นเรื่องไร้สาระ ดังนั้น 1 จึงไม่ใช่จำนวนเฉพาะ

1 และ 0 ก่อให้เกิดคลาสของตัวเลขอีกประเภทหนึ่ง ซึ่งเป็นคลาสขององค์ประกอบที่เป็นกลางที่เกี่ยวข้องกับการดำเนินการ n-ary ในบางเซตย่อยของสนามพีชคณิต ยิ่งไปกว่านั้น ในส่วนของการดำเนินการบวก 1 ยังเป็นองค์ประกอบสร้างวงแหวนของจำนวนเต็มอีกด้วย

ด้วยการพิจารณานี้ การค้นหาสิ่งที่คล้ายคลึงกันของจำนวนเฉพาะในโครงสร้างพีชคณิตอื่นๆ จึงไม่ใช่เรื่องยาก สมมติว่าเรามีกลุ่มการคูณที่สร้างจากยกกำลัง 2 โดยเริ่มจาก 1: 2, 4, 8, 16, ... เป็นต้น 2 ทำหน้าที่เป็นองค์ประกอบที่สร้างสรรค์ที่นี่ จำนวนเฉพาะในกลุ่มนี้คือจำนวนที่มากกว่าองค์ประกอบที่เล็กที่สุด และหารด้วยตัวมันเองและองค์ประกอบที่เล็กที่สุดเท่านั้น ในกลุ่มของเรามีเพียง 4 คนเท่านั้นที่มีคุณสมบัติดังกล่าว ไม่มีจำนวนเฉพาะในกลุ่มของเราอีกต่อไป

ถ้า 2 เป็นจำนวนเฉพาะในกลุ่มของเราด้วย โปรดดูย่อหน้าแรก - อีกครั้งปรากฎว่ามีเพียง 2 เท่านั้นที่เป็นจำนวนเฉพาะ