标题:[求助]筛法求100以内素数(结果不对)
只看楼主
lico
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2007-1-15
 问题点数:0 回复次数:4 
[求助]筛法求100以内素数(结果不对)

#include "Stdio.h"
#include "Math.h"

main()
{
int a[100],i,j,n=0;
for (i=1;i<=100;i++)
{
for (j=2;j<sqrt(i);j++)
{
if ( i%j ==0 ) break;
}
if (j>=sqrt(i)+1 )
{
a[n]=i;
printf("%d is a prime number\n",a[n]); // 输出素数
n++ ;

}
}
printf ("there is %d primes",n); //输出共有共有多少个素数
getch();

}



运行结果是1 is a prime number
就这一个

[此贴子已经被作者于2007-1-28 20:04:44编辑过]

搜索更多相关主题的帖子: 筛法 素数 结果 
2007-01-28 19:56
slong
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2006-11-9
得分:0 

#include <stdio.h>
#include <math.h>

int main(void)
{
int i,j,temp;
int top=1;

for(i=2;i<=100;i++)
{
temp=(int)sqrt(i);
for(j=2;j<=temp;j++)
if(i%j == 0)
{
top=0;
break;
}
else
top=1;
if(top==1)printf("%d ",i);
}

getch();
return 0;
}

2007-01-28 23:38
tyc611
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-1-21
得分:0 
Eratosthenes筛选法。

假设要计算从0到max(max>2)以内所有的素数。首先,Eratosthenes筛选法把指定范围内的所有数都标记为素数。然后,从数字2开始,标记所有2的倍数为非素数;标记完后,再从下一个素数开始标记它们的倍数。重复该过程,直到所有的素数都被处理完。上述过程结束后,就已经标记出了所有素数和非素数。

这把我用C++写的一个,很容易改写成C的
http://blog.chinaunix.net/u/18517/showart_231803.html

2007-01-29 00:11
huawang99
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2007-1-28
得分:0 

我写的程序,最后求得在100一下素数的总数为26,不知道对不对.

#include <stdio.h>

int main(void)
{
int a,s=0;
int b,k;
int d=0;


if(a==1||a==2||a==3)
{
printf("\n the number is su shu!");
}
else
{

for(a=3;a<=100;a++)
{
k=a;
for (k=2;k<=a/2;k++)
{
if(a%k==0)
{
printf("\n%d is not a sushu,please input another number!",a);
d++;
break;

}

}
s=100-d;

}
printf("\nthe number of nonsushu is%d",d);
printf("\nthe sushu's total number is %d",s);

}
getch();
return 0;
}


2007-01-29 13:07
huawang99
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2007-1-28
得分:0 
更正一下啊,虽然结果没有影响,但是上面的程序是我以前写的判断素数的程序改来的,有点冗余,
下面的是改正过后的程序:
#include <stdio.h>

int main(void)
{
int a,s=0;
int b,k;
int d=0;
for(a=3;a<=100;a++)
{
k=a;
for (k=2;k<=a/2;k++)
{
if(a%k==0)
{
printf("\n%d is not a sushu,please input another number!",a);
d++;
break;

}

}
s=100-d;

}
printf("\nthe number of nonsushu is%d",d);
printf("\nthe sushu's total number is %d",s);
getch();
return 0;
}


2007-01-29 13:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-118588-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.842662 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved