求100之内100 200之间的素数数。(用数组的方法)

贴个代码:
1 # include &stdio.h& 2 # include &math.h& 3
4 int main(void) 5 { 6
int i, j, n, a[101]; 7
for(i = 1; i &=100; i++) 9
//使 a[1] 到 a[100] 的值为 1 到 10011
//a[1]的值是:1,1不是素数,所以将其值赋为014
a[1] = 0;15 16
for(i = 2; i & sqrt(100.0); i++)17
for(j = i + 1; j &= 100; j++)19
if(a[i] !=0 && a[j] != 0)21
if(a[j] % a[i] == 0)
//用被找出的上一个素数,去除以其后面的每一个数23
//如果能够被整除(条件成立),将该数赋值为 0,即非素数25
for(i = 2, n = 0; i &= 100; i++)31
if(a[i] != 0)
//选出值不为 0 的数组元素,即素数33
printf("%-5d", a[i]);35
if(n == 10)38
printf("\n");40
return 0;45 }
阅读(...) 评论()共有 8396 人关注过本帖
标题:求100以内素数的问题
等 级:新手上路
帖 子:78
结帖率:78.57%
&&问题点数:0&&回复次数:14&&&
求100以内素数的问题
求素数的流程图或程序,并且能够输出2来,我看过几个程序,都不能输出2.求教
搜索更多相关主题的帖子:
等 级:业余侠客
帖 子:192
专家分:290
以后还是把自己的思路说出来吧
等 级:论坛游民
帖 子:30
专家分:68
#include&stdio.h&
#include&stdlib.h&
#include&time.h&
double m,n;
int main()
&&& FILE *
&&& int i,j,k;
&&& int *a=NULL,*p=NULL;
&&& printf(&请输入要求最大的数内的素数:&);
&&& scanf(&%d&,&x);
&&& m=clock();
&&& p=(int *)malloc((x+1)*4);&&&&&&&&&&&&&&&&&&&&&&&&&&&//申请动态数组
&&& for(i=2;i&=x;i++)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//录入2到x之间的值,包括x和2的边界值
&&&&&&&&p[i-2]=i;
&&& a=p;&&&&&&&&&&&&&&&&&&&&&
&&& for(;p[j-2]&=x;j++)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//排去从素数的倍数,并将该倍数赋值为该素数
&&&&&&&&for(i=j;i&=x;i++)
&&&&&&&&&&&&if(a[i-2]!=p[j-2])
&&&&&&&&&&&&&&& if((a[i-2]!=0)&&(p[j-2]!=0))
&&&&&&&&&&&&&&&&&&&&if(a[i-2]%p[j-2]==0)
&&&&&&&&&&&&&&&&&&&&&&&&a[i-2]=0;
&&& n=clock();
&&& printf(&输出的素数是:\n&);&&&&&&&&&&&&&&&&&&&&&&&& //输出数组中非零的数
&&& for(i=2,j=1;i&=x;i++)&&&
&&&&&&&&if(a[i-2]!=0)
&&&&&&&&&&&&printf(&%d\t&,a[i-2]);
&&&&&&&&&&&&p[j-1]=a[i-2];
&&&&&&&&&&&&if(j%8==0)
&&&&&&&&&&&&&&&&&&&&printf(&\n&);
&&&&&&&&&&&&j++;
&&& if((fp=fopen(&F:\\prime.txt&,&w+&))==NULL) //写入文本
&&&&&&&&&&&&exit(0);
&&& for(k=0;k&j-1;k++)
&&& fprintf(fp,&%d\t&,p[k]);
&&& printf(&\n&);
&&& printf(&保存成功!\n&);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//提示保存文件成功
&&& fclose(fp);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//关闭文件
&&& free(p);
&&& printf(&计算所需时间:&);
&&& printf(&%.6lf\n&,(n-m)/1000);
&&& scanf(&%d&,&j);
&&& return 0;
&&&自己找一下这个算法吧!!!
因为爱情,不会轻易悲伤······
等 级:职业侠客
帖 子:139
专家分:313
找个算法就OK了
等 级:论坛游民
帖 子:12
专家分:10
#include&stdio.h&
int main(){
&&& int i,j,
&&& printf(&2,3,5,&);
&&& count=sqrt(100);
&&& for(i=5;i&=100;i++){
&&&&&&&&if(i%2!=0&&i%3!=0&&i%5!=0)
&&&&&&&&&&&&printf(&%d,&,i);
&&& return 0;
因为我们知道2,3,5肯定是素数,可以先把它三个输出。所以如果一个数i不能把他们都整除,那这个数i也是素数。
还有另一种方法就是先对你所求的100以内的100进行开平方。如果在这个平方根以内的数不能求出某个数的因子。那大于平方根的也肯定求不出。
这个方法复杂度要高一些。要用到双重循环
#include&stdio.h&
#include&math.h&
int main()
&&&int i,m,j;
&&&for(i=2;i&=100;i++)
&&& m=sqrt(i);
&&& for(j=2;j&=m;j++)
&&&&&& if(j%m!=0)
&&&&&&&&&if(j&m)
&&&&&&&&&&&&printtf(&%d &,i);
&&&&&& else
&&& return 0;
等 级:新手上路
帖 子:12
回复 3楼 JON_me
你这个好复杂,以前我看到过的只有你这个的一半就完成了
等 级:论坛游民
帖 子:12
专家分:10
我贴出来的是两个程序。两种方法。呵呵。还望楼上大师赐教
等 级:新手上路
帖 子:78
回复 5楼 freecast
有没有不用break的程序了,画流程图的话没法表示,我觉得你的第一个程序有问题,不能只考虑2,3,5。
等 级:论坛游侠
帖 子:89
专家分:168
等 级:论坛游侠
帖 子:89
专家分:168
标记法 假设全是素数
for(i=2;i&=100;i++) {
&&& int k=1&&&&&&&&&&&&&&&//k=1表示素数&&&&&&&&&&&&
&&& for(j=2;j&=i/2;j++) {&&&&&&&&&&&
&&&&&&&&if(i%j==0) {
&&&&&&&&&&&&k=0;&&& //k=0表示不是素数
&&&&&&&&&&&&&&//下面的循环判断也就没必要执行了
&&& if(k==1) {
&&&&&&&&printf(&%d&,i);
版权所有,并保留所有权利。
Powered by , Processed in 0.045617 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved输出100以内的质数,用c语言编写-中国学网-中国IT综合门户网站-提供健康,养生,留学,移民,创业,汽车等信息
> 信息中心 >
输出100以内的质数,用c语言编写
来源:互联网 发表时间: 9:16:47 责任编辑:王亮字体:
为了帮助网友解决“输出100以内的质数,用c语言编写”相关的问题,中国学网通过互联网对“输出100以内的质数,用c语言编写”相关的解决方案进行了整理,用户详细问题包括:RT,我想知道:输出100以内的质数,用c语言编写,具体解决方案如下:解决方案1:
} } return 0;2;如果i能被j整除 就不是质数 退出循环 if(j&2) { count++.h&gt,i);/i&i&#47:#include&lt,j; if(count%5==0)/j&
for(i=2;n&
int main() {i++) { for(j=2;%-3d&100;j++) if(i%j==0)/\/ int count=0;=i/当每一行有5个数时 换行 printf(&); printf(&楼主你好用最简单的方式编写的
解决方案2:
j++) if(#include &i&lt.h&%d\i++) { for(j=2; for(i=2;int main(){ int i,j; if(i%j) printf(&=100;j*j&lt,i);=i;stdio!(i%j));n& } return 0
解决方案3:
楼上虽是正解,但不用函数是吗?把他的函数写到main里面就行了,稍微改些地方就ok了。
相关文章:
最新添加资讯
24小时热门资讯
Copyright © 2004- All Rights Reserved. 中国学网 版权所有
京ICP备号-1 京公网安备02号}

我要回帖

更多关于 c语言求100以内素数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信