标题:c语言多重循环
只看楼主
frecklesss
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2020-3-17
结帖率:71.43%
已结贴  问题点数:10 回复次数:21 
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
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:2 
我拿你的代码编译,编译就失败

int main(){
    long int m,n,a,b,c,j;   
    scanf("%ld %ld" , &m,&n);   
    b=m;   
    for(a=3;a<c;a++)    {  // 这里的c未初始化
2020-03-26 10:13
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:0 
仔细审题,重新写

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2020-03-26 10:29
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
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
我编译器是正确的啊

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-26 12:52
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:2 
按题目要求,如果输入 5 101
程序应该输出从6到100的48个偶数的表达式。
所以需要的改动很大,不如重新写。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2020-03-26 12:59
frecklesss
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2020-3-17
得分:0 
回复 9楼 forever74
懂了,意思是如果m=a+b,a和b是要程序算出来不是我写出来,是这个意思吗?
可是我不知道怎么做救救孩子
2020-03-26 13:04



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




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

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