标题:C语言循环语句出问题
只看楼主
玄溪
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-6-29
结帖率:0
已结贴  问题点数:20 回复次数:5 
C语言循环语句出问题
#include <stdio.h>
int main(void)
{
    int i,n,k,r,sum;
    sum=2;
    for(n=2;n<319;++n)
    {
        if(n==2)printf("%d",n);
        else
        {
            for(i=2;i<n;i++)
            {
                k=n%i;
                if(k==0)r=1;
            }
            if(r==1)sum=sum;
            else
            {
                printf("%d ",n);
                sum+=n;
            }
        }
    }
    printf("\n");
    printf("%d\n",sum);
}
找出1——318内的素数,并求和,只循环到n=3的时候,求改正的代码
搜索更多相关主题的帖子: void include C语言 
2012-11-07 13:20
a635958000
Rank: 4
等 级:业余侠客
帖 子:55
专家分:253
注 册:2012-10-26
得分:7 
#include <stdio.h>
int main(void)
{
    int i,n,k,r,sum;
    sum=2;
    for(n=2;n<319;++n)
    {
        r=0;
        if(n==2)
            printf("%d ",n);
        else
        {
            for(i=2;i<n;i++)
            {
                k=n%i;
                if(k==0)
                {
                    r=1;
                    break;
                }
            }
            if(r==1)sum=sum;
            else
            {
                printf("%d ",n);
                sum+=n;
            }
        }
    }
    printf("\n");
    printf("%d\n",sum);
}
2012-11-07 13:35
玄溪
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-6-29
得分:0 
回复 2楼 a635958000
能给解释一下吗?就是那个break;
2012-11-07 19:07
范护最
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:26
专家分:24
注 册:2012-10-17
得分:7 
r=1;
break;
是r=1时内循环结束。

1爱0
2012-11-07 19:24
a635958000
Rank: 4
等 级:业余侠客
帖 子:55
专家分:253
注 册:2012-10-26
得分:0 
回复 3楼 玄溪
当r=1时,说明该数除了1和本身还有其他能被整除的数,因此这个数不是素数,要跳出循环,计算下一个数是不是素数,就要加上一个break。
2012-11-08 08:47
龙航四海
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:58
专家分:102
注 册:2012-10-17
得分:7 
#include <stdio.h>
 main(void)
 {
     int i,n,k=0,r=0,sum=0;
     
     for(n=1;n<319;n++)
     {
         r=1;
         if(n==2)
             r=1;
         else
         {
             //for(i=2;i<n;i++)这一语句中i的变化范围可以缩小

         for(i=2;i<=n/2;i++)
         {
            
               
                if(n%i==0)
                    r=0;   
                 
               
         }
             if(r==1)
             {
                 printf("%5d",n);
                 sum=sum+n;
             }
   
             /*
             else
            {
                printf("%d ",n);
                sum+=n;
             }*/
         }
         
     }
     printf("\n");
     printf("%d\n",sum);
 }
 并且我在条件控制语句上有所改动,希望能帮到你。


[ 本帖最后由 龙航四海 于 2012-11-8 16:48 编辑 ]
2012-11-08 16:40



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




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

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