求C语言高手帮我看看我这道题哪里错了?

/*
【问题描述】
输入两个正整数m和n(m≥1,n≤500),输出m和n之间的所有素数,每行输出6个,每个正整数按%4d格式输出。
素数是指只能被1和自身整除的正整数,最小的素数是2。

提示:
使用for循环对m和n之间所有的整数逐一进行判断,判断整数是否为素数,如果是素数就输出。
正整数 x 按%4d格式输出:printf("%4d",x);

【输入形式】
从键盘输入两个正整数m和n。

【输入输出样例1】(下划线部分表示输入)
Input m: 1
Input n: 35
2 3 5 7 11 13
17 19 23 29 31

【样例说明】
每行输出6个正整数,每个正整数按%4d格式输出。
输入提示符后要加一个空格。其中“:”后要加一个且只能一个空格。
英文字母区分大小写。必须严格按样例输入输出。
*/

# include<stdio.h>
# include<math.h>
int main(void)
{
int count, i, j, k, m, n;
printf("Input m: ");
scanf("%d",&m);
printf("Input n: ");
scanf("%d",&n);
if(m==1) m=m+1;
count =0;
for (i =m ; i <=n ; i ++){
k =sqrt (i );
for (j=2;j<=k ;j++)
if (i %j ==0) break;
if (j>k ) {
printf("%4d",i);
count++;
if(count%6==0) printf("\n");
}

}

printf("\n");

return 0;
}

交了作业,运行结果说格式错误,是这样的,第一行 2 3 5 7 11 13
每个整数前是4个空位没错,但是第二行 17 19 23 29 31每个整数的十位数字前是三个空位了,答案要求也是4个空位啊,我该怎么改代码啊?谢谢高手赐教!
如图,怎么把第二行第一个整数17的十位数字1与上一行的2对齐?

第1个回答  2012-04-22
把 printf("%4d",i);改成 printf("%-4d",i);
第2个回答  2012-04-22
\t
第3个回答  2012-04-22
%4d意思是如果数据的位数小于4,则左端补以空格,若大于4,则按实际位数输出。
当你输出2位数时,左侧当然只补2个空位了。本回答被提问者采纳