| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 886 人关注过本帖
标题:求助.一道求素数的问题
只看楼主 加入收藏
维c
Rank: 1
等 级:新手上路
帖 子:202
专家分:0
注 册:2007-8-13
收藏
 问题点数:0 回复次数:10 
求助.一道求素数的问题

求100-200之间的素数

/*算法:让i被2到根号i除,如果i能被其中一个整除,那i不是素数*/
#include<stdio.h>
#include<math.h>
int main(void)
{
int i,j,k,l=0;

for (i=101;i<201;i++)
{
j=sqrt(i);
for (k=2;k<=j;k++)
{
if (i%k==0)
{
l=1;
break;
}
}
if (l==0)
printf ("%4d",i);
}
getch();
return 0;
}


帮我看看哪里错了,为什么运行只输出101?

搜索更多相关主题的帖子: 素数 
2007-08-19 16:21
lishizelibin
Rank: 2
等 级:论坛游民
帖 子:513
专家分:41
注 册:2007-5-10
收藏
得分:0 

又看到二级试题了


惟有学习不断的学习!
2007-08-19 16:23
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
L没有刷新```
因为第2个数102不是素数``所以回执行``l=1;
然后L永远都是1```就是没有更新``

所以只输出了第一个```

j=sqrt(i);
后加上l=0;

看看``

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-08-19 16:27
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
以下是引用lishizelibin在2007-8-19 16:23:15的发言:

又看到二级试题了



这个就是2级试题```???计算机2级还是C语言2级```


女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-08-19 16:28
coachard
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:1251
专家分:0
注 册:2007-8-12
收藏
得分:0 

用碾转相除!


偶学编程,也许本身就是一个错。。。
2007-08-19 16:29
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
以下是引用coachard在2007-8-19 16:29:17的发言:

用碾转相除!



新东西````能讲解以下吗```


女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-08-19 16:41
coachard
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:1251
专家分:0
注 册:2007-8-12
收藏
得分:0 
刚刚题目看错了

眼花看成了100—200之间任意两数的最大公约数

碾转相除是求最大公约数用的

偶学编程,也许本身就是一个错。。。
2007-08-19 17:04
reblack
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-8-18
收藏
得分:0 

应该改成这样
#include<stdio.h>
#include<math.h>
int main(void)
{
int i,j,k,l=0;

for (i=101;i<201;i++)
{ l=0;
j=sqrt(i);
for (k=2;k<=j;k++)
{
if (i%k==0)
{
l=1;
break;
}
}
if (l==0)
printf ("%4d",i);
}
getch();
return 0;
}

你第一次循环后,l就一直是1了,所以最后一个if根本不会值行,改正的方法就是在每次循环开始前把l清零。

2007-08-19 19:19
mayi2007
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-8-19
收藏
得分:0 
以下是引用死了都要C在2007-8-19 16:27:29的发言:
L没有刷新```
因为第2个数102不是素数``所以回执行``l=1;
然后L永远都是1```就是没有更新``

所以只输出了第一个```

j=sqrt(i);
后加上l=0;

看看``

完全正确

2007-08-19 19:25
nwpu063417
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:428
专家分:28
注 册:2007-5-11
收藏
得分:0 

#include <stdio.h>
#include <math.h>
#include <conio.h>
int main(void)
{
int i,j,k,l;

for (i=101;i<201;i++)
{
l=0; //每次循环时把l赋初值0
j = (int)sqrt(i);
for (k=2;k<=j;k++)
{
if (i%k==0)
{
l=1;
break;
}
}
if (l==0)
printf ("%4d",i);
}
// getch();
return 0;
}


2007-08-19 19:26
快速回复:求助.一道求素数的问题
数据加载中...
 
   



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

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