1 solutions

  • 0
    @ 2025-11-5 18:01:58

    C++ :

    #include <stdio.h>
    
    
    
    int isprime(long long p) {
    
        long long i;
    
        for(i = 2; i*i <= p; i++) {
    
            if(p%i == 0) return 0;
    
        }
    
        return 1;
    
    }
    
    main() {
    
        while(1) {
    
            long long p, a, ap, pp, aa;
    
    
    
            scanf("%lld %lld", &p, &a);
    
            if(p == 0) break;
    
            if(isprime(p)) {
    
                puts("no");
    
                continue;
    
            }
    
            ap = 1;
    
            pp = p;
    
            aa = a;
    
            while(pp) {
    
                if(pp&1) ap*= aa;
    
                ap %= p;
    
                aa = (aa*aa)%p;
    
                pp >>= 1;
    
            }
    
            //printf("%lld %lld\n", ap%p, a);
    
            if(ap%p == a) puts("yes"); else puts("no");
    
        }
    
    }
    
    • 1

    Information

    ID
    18730
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    (None)
    # Submissions
    0
    Accepted
    0
    Uploaded By