问题标题: 酷町堂:3823:找质数对 来找错

0
1
已解决
赵朗
赵朗
高级光能
高级光能

3823:找质数对

找错

 

赵朗在2020-04-30 22:55:32追加了内容
  • #include<iostream>
  • #include<cstdio>
  • #include<cmath>
  • using namespace std;
  • int cmp(int tp)
  • {
  • int m=0;
  • if (tp==1)
  • return m;
  • else
  • {
  • for(int i=2;i<=sqrt(tp);i++)
  • {
  • if (tp%i==0)
  • m++;
  • }
  • return m;
  • }
  • }
  • int main()
  • {
  • int m,sum=0;
  • cin>>m;
  • for(int i=1;i<=m/2;i++)
  • {
  • if (cmp(i)==0&&cmp(m-i)==0)
  • sum++;
  • }
  • cout<<sum;
  • }

0
已采纳
李泽远
李泽远
高级天翼
高级天翼

for(int i=2;i<n;i++){

if(prime(i)&&prime(n-i)&&a[n-i]==0)

    cnt++;

 a[i]++;

}

prime(i)是判断素数的函数

0
0
0
丁海洋
丁海洋
中级守护
中级守护

本人思路,for循环应从2开始,而且也可以不用函数啊,定义一个数组a,首先a[1]要定义为1。因为1不是质数,然后你要去判断b是不是0,是0,直接输出0;然后不知道你学没学到埃氏筛,用埃氏筛代码(没学到不建议写)去找出n以内的质数,然后fori循环判断成不成题目说的条件,成cnt++且c【i】=1,因为不能重复

然后ac喽!

0
吴庞茂旭
吴庞茂旭
资深光能
资深光能

emmmm,这一题我AC过。

我先说一下我的思路吧:先定义一个求质数的函数(我默认你会,真不行可以上网查一下,说不定有你想要的),再循环从1开始到n/2结束(你看你是不是错在这了),然后套用这个公式:质数函数(i)&质数函数(n-i)&i+(n-i)是n(&是位运算符,常用可以加速哦!),若正确,计数器加一。最终输出计数器。

修改建议:将cmp函数改为判断质数的函数,套用公式质数函数(i)&质数函数(n-i)&i+(n-i)是n,sum++(但我强烈建议将sum改为cnt,言简意赅,意思明确)

手写不易,求通过。

部分代码:

0
0
我要回答