问题标题: 酷町堂:3823大佬帮帮忙

0
0
已解决
吴君昊
吴君昊
新手光能
新手光能

我哪错了???我都奋斗了2小时了,就是做不出来

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
#include<cmath>
using namespace std;
int main(){
    int n,ys=0,sum=0;
    bool f1=0,f2=0;
    cin>>n;
    for(int i=2;i<=n/2;i++){
        ys=(n-i);
        f1=0,f2=0;
        for(int j=2;j<=sqrt(i);j++){
            if(i%j==0){
                f1=1;
            }
        }
        if(f1==0)//此时的是质数
        {
            for(int k=2;k<=sqrt(ys);k++){
                if(ys%k==0){
                    f2=1;
                }
                else
                    sum++;
            } 
        }
    }
    cout<<sum;
    return 0;
}

大佬帮帮忙

采纳最快最好的,我会悬赏;


0
已采纳
赵逸凡
赵逸凡
初级启示者
初级启示者

赵逸凡在2020-03-05 18:09:23追加了内容

@吴君昊 

 

赵逸凡在2020-03-05 19:36:30追加了内容

@吴君昊 

但是你没有调用过f2啊,f2不需要啊,你可以直接如果ys%k==0就break,f2可以删除

赵逸凡在2020-03-05 19:41:09追加了内容

@吴君昊 

还有为什么ys%k!=0时你就sum++,你理解了吗?按你的代码说你的思路是统计ys(即满足条件的n-i)的与其互质数。这时你可以判断是否k=sqrt(ys)并且ys%k是否≠0,如果两个条件都满足sum++

 

赵逸凡在2020-03-05 19:44:20追加了内容

@吴君昊 

或者你不知道break函数,你也可以用f2,你如果不需要优化就不优化了,那就把else删掉,在循环后判断f2是否等于0,是则sum++

0
0
我要回答