Computer >> Máy Tính >  >> Lập trình >> C ++

Định lý nhỏ Fermat trong C ++

Định lý nhỏ của Fermat -

Định lý này phát biểu rằng với bất kỳ số nguyên tố p nào,

A p - p là bội số của p.

Tuyên bố này trong số học mô-đun được biểu thị là,

a p ≡ a (mod p)

Nếu a không chia hết cho p thì

a p - 1 ≡ 1 (mod p)

Trong bài toán này, chúng ta được cho hai số a và p. Nhiệm vụ của chúng tôi là xác minh định lý nhỏ của fermat trên các giá trị này.

Chúng tôi cần kiểm tra xem a p ≡ a (mod p) hoặc a p - 1 ≡ 1 (mod p)

Giữ đúng cho các giá trị đã cho của a và p.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào: a =3, p =7

Đầu ra: Đúng

Giải thích:

A p-1 ≡ 1 (mod p)

=> 3 6 ≡ 729

=> 729 - 1 =728

=> 728/7 =104

Chương trình minh họa hoạt động của định lý,

Ví dụ

#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;
}

Đầu ra -

Fermat's little theorem holds true!