| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3650 人关注过本帖
标题:c语言多重循环
取消只看楼主 加入收藏
frecklesss
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2020-3-17
结帖率:71.43%
收藏
已结贴  问题点数:10 回复次数:9 
c语言多重循环
哥德巴赫猜想:任何一个大于6的偶数均可表示为两个素数之和。输入两个整数m,n(),将m,n之间的偶数表示成两个素数之和。例如偶数M=a+b,其中a和b是素数,且a<b,a是所有成立的等式中最小的素数(例如:10=3+7,10=5+5,则只保留前面的式子)。
示例:
输入格式:8 10
输出格式:8=3+5;10=3+7;(注意:式子中所有符号均为英文状态下的符号)

以下是我的代码:

程序代码:
#include<stdio.h>
int main(){
    long int m,n,a,b,c,j;    
    scanf("%ld %ld" , &m,&n);    
    b=m;    
    for(a=3;a<c;a++)    {   
         b=m-a; 
         c=n-a;       
         for(j=2;j<=a-1;j++)   {    
            if(a%j==0)        
            break;   
        }   
        if(j<a)continue;       
        for(j=2;j<=b-1;j++)   {    
           if(b%j==0)        
           break;   
        }   
        if(j<b)continue;  
        for(j=2;j<=c-1;j++)   {    
           if(c%j==0)        
           break;   
        }   
        if(j<c)continue; 
        printf("%ld=%ld+%ld;%ld=%ld+%ld;",m,a,b,n,a,c);   
        break;    
    }    
    return 0;
}


可是我交作业的时候就会提示这个,怎么解决呢?
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: c语言 for 循环 素数 break 
2020-03-26 09:54
frecklesss
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2020-3-17
收藏
得分:0 
回复 2楼 rjsp
图片附件: 游客没有浏览图片的权限,请 登录注册

我可以编译呢
2020-03-26 11:41
frecklesss
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2020-3-17
收藏
得分:0 
回复 3楼 forever74
是判断素数那里出错了吗
2020-03-26 11:42
frecklesss
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2020-3-17
收藏
得分:0 
回复 2楼 rjsp
程序代码:
#include<stdio.h>
int main(){
    int m,n,a,b,c,j;    
    scanf("%d %d",&m,&n);       
    for(a=3;a<c;a++)    {          
         for(j=2;j<=a-1;j++)   {    
            if(a%j==0)        
            break;   
        }   
        b=m-a; 
        c=n-a;       
        for(j=2;j<=b-1;j++)   {    
           if(b%j==0)        
           break;   
        }    
        for(j=2;j<=c-1;j++)   {    
           if(c%j==0)        
           break;   
        }   
        printf("%d=%d+%d;%d=%d+%d;",m,a,b,n,a,c);   
        break;    
    }    
    return 0;
}


改了一下,还是有问题。。。
2020-03-26 12:32
frecklesss
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2020-3-17
收藏
得分:0 
回复 7楼 frecklesss
不是上面的,是这个:

程序代码:
#include<stdio.h>
int main(){
    int m,n,a,b,c,j;    
    scanf("%d %d",&m,&n);    
    b=m;
    c=n;    
    for(a=3;a<c;a++)    {          
         for(j=2;j<=a-1;j++)   {    
            if(a%j==0)        
            break;   
        }   
        b=m-a; 
        c=n-a;       
        for(j=2;j<=b-1;j++)   {    
           if(b%j==0)        
           break;   
        }    
        for(j=2;j<=c-1;j++)   {    
           if(c%j==0)        
           break;   
        }   
        printf("%d=%d+%d;%d=%d+%d;",m,a,b,n,a,c);   
        break;    
    }    
    return 0;
}
2020-03-26 12:36
frecklesss
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2020-3-17
收藏
得分:0 
回复 9楼 forever74
懂了,意思是如果m=a+b,a和b是要程序算出来不是我写出来,是这个意思吗?
可是我不知道怎么做救救孩子
2020-03-26 13:04
frecklesss
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2020-3-17
收藏
得分:0 
回复 9楼 forever74
改了还是不对啊

程序代码:
#include<stdio.h>
int main(){
    int count,i,j,k,m,n,number;
    scanf("%d%d",&m,&n);
    if(m%2!=0)
    m+=1;
    if(m>=6){
for(i = m; i <= n; i+=2) {
for(j = 2; j <= i/2; j++) {
number= 1;
for(k=2;k<j;k++)
if(j%k==0) number = 0;
for(k=2;k<i-j;k++)
if((i-j)%k==0) number = 0;
if(number == 1) {
printf("%d=%d+%d ", i, j, i-j);
break;
}
}
}
}
}
2020-03-26 16:10
frecklesss
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2020-3-17
收藏
得分:0 
回复 12楼 Z1020
哇!真的对了!太感谢了
老师让用嵌套循环做,我怎么改都不对
2020-03-26 16:13
frecklesss
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2020-3-17
收藏
得分:0 
这个是老师的答案分享一下

程序代码:
#include<stdio.h>
int main()
{
     int m,n,k,t,i,x,count=0;
     scanf("%d%d",&m,&n);
     for(k=m;k<=n;k++)    //k取中间任何一个值 
     {
      if(k%2==0)   //k是偶数才计算 
      for(t=3;t<k/2;t+=2)     //素数2,是唯一偶数,不可能,否则偶数减去偶数剩下也是偶数了 
        { 
         for(i=2;i<t;i++)   //从t=3开始作为一个和数  
           if(t%2==0)
             break;
         if(i==t)
             {
              x=k-t;    //当t是素数的情况下,判断另外一个和数k-t是否素数 
              for(i=2;i<x;i++)
                 if(x%i==0)
                   break;
                 if(i==x)
                    {
                      printf("%d=%d+%d;",k,t,x);
                      break;    //找到一对和数成立后就停止寻找 
                    }
             }
        }
     }
  return 0;  
}
2020-03-26 16:22
frecklesss
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2020-3-17
收藏
得分:0 
回复 16楼 return_0
嗯嗯\(^o^)/
2020-03-26 16:25
快速回复:c语言多重循环
数据加载中...
 
   



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

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