1 条题解

  • 0
    @ 2025-9-10 9:00:40

    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

    信息

    ID
    3640
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    (无)
    递交数
    0
    已通过
    0
    上传者