日能研の広告の問題をpythonで解いてみた記事があったので、同じことをC言語で実装してみました。
# include <stdio.h>
# include <math.h>
int trim(int d, int n) {
	int w, k=1, t=0;
	while(d > 0) {
		w = d % 10;
		if(w != n) {
			t += k * w;
			k *= 10;
		}
		d /= 10;
	}
	return t;
}
int ite(int *d) {
	int r;
	r = *d % 10;
	*d /= 10;
	return r;
}
void output(int val) {
	int i,w;
	w = val;
	for(i=6; i>1; i--) {
		if(w%i != 0)
			break;
		w /= 10;
	}
	if(i <= 1) {
		static int cnt = 1;
		printf("%d\n", val);
	}
}
void permutations(int cl, int k, int val) {
	int t_i, t_cl, t_w;
	if(k-2 <= 0) {
		output(val + cl);
		output(val + (10*(cl%10)) + (cl/10));
		return;
	}
	t_cl = cl;
	while((t_i=ite(&t_cl)) != 0) {
		t_w = t_i * pow(10, k-1);
		permutations(trim(cl,t_i), k-1, val+t_w);
	}
}
int main() {
	permutations(123456, 6, 0);
	return 0;
}
permutations()を再帰的に呼ぶことでpythonのitertools.permutations()と同様のことを行い、生成した値をoutput()に渡して条件を満たす時だけ出力しています。
