张家界旅游市场:C的程序,带新人的来

来源:百度文库 编辑:神马品牌网 时间:2024/04/30 14:38:30
编程打印出200以内的所有素数,并显示素数的个数
要求每10个数字为一行,分几行显示
要求用循环语句解决,说是无法定义,是Turco C的程序么?前面的还好点,可是后面的10个数为一行怎么也弄不好,能对程序解释的细点么
2楼的同志,系统说你的25行有问题啊???

程序如下:
#include "stdio.h"
#include "math.h"
#define N 201
main()
{
int i,j,line,a[N];
for(i=2;i<N;i++) a[i]=i;
for(i=2;i<sqrt(N);i++)
for(j=i+1;j<N;j++)
{
if(a[i]!=0&&a[j]!=0)
if(a[j]%a[i]==0)
a[j]=0;
}
printf("\n");
for(i=2,line=0;i<N;i++)
{
if(a[i]!=0)
{
printf("%5d",a[i]);
line++;
}
if(line==10)
{
printf("\n");
line=0;
}
}
return 0;
}

#include <math.h>
#include <stdio.h>
#define maxnum 14000
#define maxprime 200
int fil[maxprime+1] = {0};
long prime[maxnum];
/*The number of the prime numbers Max of these prime numbers
100 541
1000 7919
5000 48611
10000 104729
50000 611953
100000 1299709
500000 7368787
1000000 15485863
*/
void filtrate()
{
long i, j, k;
for(i = 2, j = 0; i <= maxprime && j < maxnum; i ++)
{
if(fil[i] == 0)
{
prime[j ++] = i;
if(i <= long(sqrt(maxprime)))
{
for(k = i*i; k <= maxprime; k += i)
fil[k] = 1;
}
}
}
}

int main()
{
filtrate();

int i, count;

for(i = 2; i <= 200; i ++)
{
if(fil[i] == 0)
{
printf("%d ",i);
count ++;
if(count%10 == 0)
printf("\n");
}
}
printf("\n");

return 0;
}

用筛法实现的哈,很经典的算法哦

int main()
{
boolean a[200]={true};
for(int i=1;i<=200;i++)
for(int j=2;j<=sqrt(200);j++)
if(i%j==0)
a[i]=false;
i=0;
while(a[i++]==true)
{
print("i\t");
if(i%8)
print("\n");
}
return 0;
}

这只是特定的情况,一般的情况就不写了.

多给点分.