求C语言程序设计:输出2~1000内所有质数。要求:输出每行5个数,数与数上下对齐!求解答啊~

求完整的程序设计啊~

1000以内的话,每个数都不超过4位, 按照占5位或以上打印就行
printf("%5d",num);//位宽5, 前面添空格, 要左对齐的话,后面添,用%-5d

#include <stdio.h>
#include <math.h>
int IsPrim(int n)
{
int i,j;
j=sqrt(n);
for(i=2;i<=j;i++)if(n%i==0)return 0;
return 1;
}
int main()
{
int i,n;
for(i=2,n=0;i<=1000;i++)
{
if(IsPrim(i))
{
printf("%-5d",i);
if(++n%5==0)printf("\n");
}
}
printf("\n");
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-29
#include<stdio.h>
#include<conio.h>

void main()
{
int ans[1000],tmp,i,j,k=0;

for(i=2;i<=1000;i++)
{
tmp=0;
for(j=i+1;j*j<=i;j++) //循环判断 i 是否为素数,如能被除尽则不是素数,跳出

{
if(i%j==0){
tmp=1;
break;
}
}
if(tmp==0) // i 不能被除尽时为素数,将结果保存

ans[k++]=i;
}
for(i=0;i<k;i++) //对齐输出

if(i%5==0)
printf("\n%-5d",ans[i]);
else
printf("%-5d",ans[i]);
getch();
}
第2个回答  2012-11-29
#include "stdio.h"
#include "string.h"
void main()
{
int i, a, n = 1, sign;
printf("%5d", 2);
for(i = 3; i < 1000; i += 2)
{
sign = 0;
for(a = 2; a < i / 2; a ++)
if(i % a == 0)
sign = 1;
if(sign == 0)
{
if(n >= 5)
{
printf("\n");
n = 0;
}
printf("%5d",i);//右对齐;printf("%-5d",i);左对齐
n ++;
}
}

}
相似回答