Comunque sei molto fuori strada.
Innanzitutto i primi 1000 numeri di Leyland sono molto lunghi, quindi non hai molte alternative oltre a studiarti bene il linguaggio se vuoi arrivare alla soluzione
https://oeis.org/A076980/b076980.tx
Se vuoi, invece, trovare le prime decine di soluzioni, una semplice base di partenza potrebbe essere questa
#include<stdio.h>
#include<inttypes.h>
uint64_t ull_pow(int b, int e){
uint64_t r = 1;
while(e-->0)
r *= b;
return r;
}
uint64_t ull_sqrt(uint64_t n){
uint64_t r = 0;
while(r*r<=n)
r++;
return --r;
}
int is_Leyland(int n){
if(n==3)
return 1;
uint64_t x, y, z, t = ull_sqrt(n);
for(x = 2; x <= t; x++)
for(y = x; y <= t; y++){
z = ull_pow(x,y) + ull_pow(y,x);
if(z == n)
return 1;
else if(z > n)
break;
}
return 0;
}
int main() {
int x, y, n = 3, found = 0;
while(found < 30){
if(is_Leyland(n)){
printf("%d\n", n);
found++;
}
n++;
}
return 0;
}