标题:帮帮忙呀!求求,,,为什么不对?
只看楼主
大头0927
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2010-12-8
结帖率:50%
 问题点数:0 回复次数:12 
帮帮忙呀!求求,,,为什么不对?
//实验1.5 编写程序ex1_5,功能是读入一个整数n
//,求0~n间的所有素数(只有1和它本身这两个因数的自然数叫做素数)。
#include<stdio.h>
main()

{int m,n,a=2;
 printf("n=? ");
 scanf("%d",&n);
 for(m=2;m<=n;m++)
 for(a=2;a<=m;a++)
 { if(m%a==0)
   break;
 printf("%d ",m); }
}
搜索更多相关主题的帖子: 实验 编写程序 自然数 
2010-12-08 00:11
xanxus
Rank: 2
等 级:论坛游民
威 望:1
帖 子:21
专家分:60
注 册:2010-10-26
得分:0 
举个例子吧,输入数字为5
a=2,3,4,5
执行
for(a=2;a<=m;a++)
{ if(m%a==0)
   break;
printf("%d ",m);
}
肯定会输出3次5啦

授人以鱼  不如授人以渔
2010-12-08 10:29
li_danwang
Rank: 4
来 自:鄂州
等 级:业余侠客
帖 子:112
专家分:203
注 册:2010-11-12
得分:0 
#include<stdio.h>
#include<math.h>
main()

{
    int m,n,a=2;

    printf("n=? ");
    scanf("%d",&n);
    int k=sqrt(n);
    for(m=2;m<=n;m++)
        for(a=2;a<=k;a++)
        {    if(m%a==0)
                break;
        else if(a==k&&m%a!=0)
            printf("%d ",m);

        }
}

没事来C一下...   
2010-12-08 11:38
zhoufeng1988
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
注 册:2009-5-31
得分:0 
程序代码:
//实验1.5 编写程序ex1_5,功能是读入一个整数n
//,求0~n间的所有素数(只有1和它本身这两个因数的自然数叫做素数)。

#include<stdio.h>


int main()
{
    int m, n, a = 2;
   
    printf("n=? ");
    scanf("%d",&n);
    for(m = 2; m <= n; m++)
    {
        int sign = 0;
        for( a = 2; a < m;a++)
        {
            if( m%a == 0)
            {
                sign = 1;
              break;
          }
          else
          {
              sign = 0;
          }
          /*打印的函数不应放在这个地方,举个例子, m = 33,
              m % 2 是不等于0的,但不代表它就是素数。应想起他方法处理
          */
            //printf("%d ",m);
        }
       
        if ( sign == 0)
        {
            printf("%d ", m);   
        }
    }
       
    return 0;
} 
2010-12-08 11:58
kittel
Rank: 2
来 自:武汉
等 级:论坛游民
威 望:1
帖 子:38
专家分:73
注 册:2010-11-19
得分:0 
回复 楼主 大头0927
{int m,n,a=2;
printf("n=? ");
scanf("%d",&n);
for(m=2;m<=n;m++){
    int tos=1;
for(a=2;a<m;a++)
 if(m%a==0)
 {tos=0;break;}
if(tos) printf("%d ",m);
}
}
2010-12-08 13:18
zhangyasong
Rank: 2
等 级:论坛游民
帖 子:4
专家分:36
注 册:2008-12-31
得分:0 
#include<stdio.h>
int main()
{
int m,n,a=2;
printf("n=? ");
scanf("%d",&n);
for(m=2;m<=n;m++)
{
for(a=2;a<=m;a++)
{ if(m%a==0)
   break;
}
if(a==m)
printf("%d ",m);

 }
exit(0);
}

实际很简单,关键是你不能把printf放在第二个循环里面,放到第一个循环里面,然后判断下第二个循环是不是运行m次就行了,另外,实际不需要比较到m,只用循环到sqrt(m)就可以了,没有在代码上改动,你可以试下
2010-12-08 15:42
tansuo
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2010-10-6
得分:0 
你判断是否是素数的方法不对,不是看2到m之间有没有可以被整除的。按照你的程序运行2不是素数,其实2是素数,是最小的素数。你应该将第二个for循环的控制条件改一下,改成a<=sqrt(m);不过要加上头文件math.h.另外你的输出语句也不对。
2010-12-09 00:07
大头0927
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2010-12-8
得分:0 
回复 2楼 xanxus
牛!!!!O(∩_∩)O非常谢谢啦!
2010-12-09 21:59
大头0927
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2010-12-8
得分:0 
回复 3楼 li_danwang
结果不对呀!????????不过快出来了
2010-12-15 00:23
大头0927
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2010-12-8
得分:0 
回复 4楼 zhoufeng1988
哇( ⊙o⊙ )一看就是高手,俺刚开始嘞,这么多花括号呀!不好搞!!!
2010-12-15 00:54



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




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

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