Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ทฤษฎีบทเล็กๆ ของแฟร์มาต์ใน C++


ทฤษฎีบทเล็กๆ ของแฟร์มาต์ −

ทฤษฎีบทนี้ระบุว่าสำหรับจำนวนเฉพาะ 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!