新手光能
我哪错了???我都奋斗了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;
}
大佬帮帮忙
采纳最快最好的,我会悬赏;
初级启示者
赵逸凡在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++