到底什么叫筛法啊?
----------------解决方案--------------------------------------------------------
#include<math.h>
#include<stdio.h>
main()
{int i,a[100],x,j;
x=sqrt(100);
for(i=1;i<=100;i++)
a[i]=i;
for(i=2;i<x;i++)
for(j=i+1;j<=100;j++)
if(a[i]!=0&&a[j]!=0)
if(a[j]%a[i]==0)
a[j]=0;
for(j=2;j<100;j++)
if(a[j]!=0)
printf("%dt",a[j]);
}
这样子应该就行了吧,呵呵!
[[italic] 本帖最后由 freezingdevil 于 2007-11-29 06:44 编辑 [/italic]]
----------------解决方案--------------------------------------------------------
#include<stdio.h>
#include<math.h>
void main()
{
int i,j,h=0;
int leap=1;
for(i=1;i<=100;i++)
{
int k=sqrt(i+1);
for(j=2;j<=k;j++)
if (i%j==0)
{ leap=0;
break; }
if (leap)
{
printf("%-4d",i);
h++;
if(h%10==0)
printf("\n");
}
leap=1;
}
printf("total is %d\n",h);
}
----------------解决方案--------------------------------------------------------
include<stdio.h>
void main()
{ int i,m=100,n;
while(i<=m/2)
{ if(i%m/2==0)
break;
if(i>m/2)
printf("%d",i);
n++;
}
if(n==10) printf("\n");
}
----------------解决方案--------------------------------------------------------
用筛选法求100以内的素数
/*用筛选法求100以内的素数 */#include "stdio.h"
#include "conio.h"
#define N 100
main()
{ int a[N],i,j,n=0;
/*数组元素置数,由于1不是素数,从2开始*/
for(i=1;i<N;i++)
a[i]=i+1;
/*筛选,注意用i去除a[j]时,不会去除自身*/
for(i=2;i<N;i++)
for(j=i;j<N;j++)
if(a[j]%i==0) a[j]=0;
/*输出结果*/
for(i=1;i<N;i++)
if(a[i]!=0)
{printf("%5d",a[i]);
n++;
if(!(n%5)) printf("\n"); /*输出五个数后换行*/
}
getch();
}
----------------解决方案--------------------------------------------------------
补充
筛选时,外层循环的条件用 i<sqrt(N),能提高执行效率,但程序前应包含 “math.h”头文件。上面程序在TC2中以调试,13楼的程序好象不是筛选法,14楼的也错了,没有结果。 ----------------解决方案--------------------------------------------------------
main()
{int a[100];
int i,j;
for(i=1;i<=100;i++)
a[i]=i;
a[1]=0;
for(i=2;i<=sqr(100);i++)
for(j=1;j<=100;j++)
if(a[j] % i=0 && a[j]/i!=1)
a[j]=0;
for(i=1;i<=100;i++)
if(a[i]!=0) pritnf("%d,",a[i]);
}
----------------解决方案--------------------------------------------------------