#include #include #define MAXSIZE 100 int N, k; int array[MAXSIZE+1]; FILE * outfile; void PrintIt(int x) { int i; if (N % x != 0) return; fprintf (outfile, "\n"); for (i = 1; i <= N; i ++) fprintf (outfile, "%d ", array[i]); } int main (int argc, char * argv[]) { int i, j; if ( argc != 4 ) { printf("\n\nFormat: %s \n\n", argv[0]); return 1; } if ((outfile = fopen(argv[3], "w")) == NULL) return 2; N = (int) atoi(argv[1]); if (N <= 0 || N > MAXSIZE) return 3; k = (int) atoi(argv[2]); for (i = 0; i <= N; i++) array[i] = 0; PrintIt(1); i = N; do { array[i] ++; for (j = 1; j <= N-i; j++) array[j+i] = array[j]; /* if ( N % i == 0 ) */ PrintIt(i); i = N; while (array[i] == k-1) i--; } while (i != 0 ); fclose(outfile); return 0; }