ทฤษฎีบทเล็กๆ ของแฟร์มาต์ −
ทฤษฎีบทนี้ระบุว่าสำหรับจำนวนเฉพาะ p ใดๆ
A p - พี เป็นทวีคูณของหน้า
คำสั่งนี้ใน เลขคณิตแบบแยกส่วน จะแสดงเป็น
a p ≡ a (mod p)
ถ้า a ไม่หารด้วย p ลงตัว
a p - 1 ≡ 1 (mod p)
ในปัญหานี้ เราได้ตัวเลข a และ p สองตัว งานของเราคือตรวจสอบ ทฤษฎีบทเล็กๆ ของแฟร์มาต์ เกี่ยวกับค่าเหล่านี้
เราต้องตรวจสอบว่า a p ≡ a (mod p) หรือ a p - 1 ≡ 1 (mod p)
เป็นจริงสำหรับค่าที่กำหนดของ a และ p
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
ป้อนข้อมูล: a =3, p =7
ผลลัพธ์: จริง
คำอธิบาย:
อ p-1 ≡ 1 (mod p)
=> 3 6 ≡ 729
=> 729 - 1 =728
=> 728 / 7 =104
โปรแกรมแสดงการทำงานของทฤษฎีบท
ตัวอย่าง
#include <iostream>
#include <math.h>
using namespace std;
int fermatLittle(int a, int p) {
int powVal;
if(a % p == 0){
powVal = pow(a, p);
if((powVal - p) % p == 0){
cout<<"Fermat's little theorem holds true!";
}
else{
cout<<"Fermat's little theorem holds false!";
}
}
else {
powVal = pow(a, (p - 1));
if((powVal - 1) % p == 0 ){
cout<<"Fermat's little theorem holds true!";
}
else{
cout<<"Fermat's little theorem holds false!";
}
}
}
int main()
{
int a = 3, m = 11;
fermatLittle(a, m);
return 0;
} ผลลัพธ์ -
Fermat's little theorem holds true!