witam,

mam pytania odnośnie mojego kodu, próbuję zaimplementować test Millera Rabina. Jak postawić te 2 warunki w pętli aby na ekranie pokazywało że jest to liczba złożona jeśli są one spełnione dla każdego r, lub liczba pierwsza gdy jeden z nich nie jest ?

#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#include <stdio.h>a

using namespace std;


int main(){


    unsigned int seed = time(NULL);
    srand(time(0));
    
    long long int n; // sprawdzana liczba
    int p=0; // max potega liczby 2
    int d; // dopelniene
    int a;
    int s;
    int k; //ilosc powt

    
    //if(n%2=0) n=n-1; //jesli jest parzysta
    
    cout << "Podaj liczbe nieparzysta : " ;
    cin >> n;
    
    cout << "Podaj liczbe powtorzen : " ;
    cin >> k;
    
    long long int n1=n;
    while( n1 >= 2 ){ n1=n1/2 ; p++ ;}
    // cout << "Max potega 2^ : " << p << endl;
   
    //cout << pow(potega,wykladnik); funkcja do potegowania      
    
    for(int i=p;i>=1;i--){ 
            
            if((n-1)%((int)pow(2,i))==0){ s = i ; break ; } 
            
            }
                      
    //cout << "s = " << s << endl ;
   
         d = n / (int)pow(2,s);
    
    //cout << "d = " << d << endl;    
    
    for(int j=0;j<k;j++){
    
    int l=0;
    int l1=1;
    
    a = rand()%(n-1)+1;
    
    if( ((int)pow(a,d)) %n != 1 ){
        
        l=1;
        
        for(int r=0;r<=s-1;r++){
        
        int d2r = ((int)pow(2,r))*d;
        
        if( ((int)pow(a,d2r)) % n != n-1 ) { } else { l1=0 ; break ; } 
        
        } // r
       
    } else { break ; }
        
    if (l==l1) {cout << "zlozona !" << endl ; } else { cout << "pierwsza" << endl; } 
      
      
        
    }// liczba k
    
  cout << endl ;
  system("PAUSE"); 
  return 0;
}