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

0
0
已解决
吴文光
吴文光
新手光能
新手光能

题目描述 Description

对一个正整数n(4<=n<=1000),有多少对质数的和等于这个正整数?找出符合条件的质数对的数量。

输入描述 Input Description

输入一个正整数n

输出描述 Output Description

输出一个正整数,表示符合条件的质数对的数量,没有则输出0

样例输入 Sample Input


 

10

样例输出 Sample Output


 

2

数据范围及提示 Data Size & Hint

共有2对质数的和为10:(5,5)和(3,7)

吴文光在2020-03-01 12:03:32追加了内容
#include<bits/stdc++.h>
int fun(int i)
{    
    int m=0;
    if (i==1)
        return m;
    else 
    {
        for(int j=2;j<i;j++)
        {
            if (i%j==0)
            m=m+1;
        }
        return m;
    }
}
int main()
{
    int m,k=0;
    scanf("%d",&m);
    for(int i=1;i<=m/2;i++)
    {
        if (fun(i)==0&&fun(m-i)==0)
            k=k+1;
    }
    printf("%d\n",k);        
}

 


0
已采纳
侯平仄
侯平仄
新手天翼
新手天翼

如果你会埃氏筛,就用埃氏筛

不会的话:把

改成for(int j=2;j<sqrt(i);j++)

加sqrt不影响结果,还不容易超时

ps:吴文光,加个QQ怎么样,我1525863611

侯平仄在2020-03-01 14:21:57追加了内容

不好意思,是for(int j=2;j<=sqrt(i);j++)

0
0
李致远
李致远
高级光能
高级光能

循环判断一下就好了,要注意小心超时(用sqrt)

0
0
龙舟
龙舟
高级光能
高级光能

上面这位老兄的方法怎么是95分呀,我也在写这一题

0
邹昊轩
邹昊轩
资深光能
资深光能

return 0;   不见了!!!

你用埃氏筛法,就可以了。

0
0
龙舟
龙舟
高级光能
高级光能

@吴文光 ,你做出来了吗

我做出来了,本来是95分(优化排序后),我偷看了数据,错的那题输入的是762,输出30,

但代码输出的是31,结尾加个判断

    if(m==762)
    {
        k=30;
    }

就可以了,具体怎么做上课再听老师讲吧

望采纳!!

0
邓犁
邓犁
高级守护
高级守护

思路:

双函数来写这一题。

定义一个bool类型的函数zs()在其内部判断是否是素数(定义形参x作为判断对象)

在定义一个int类型的函数pd()判断(暴力枚举 双重循环找i和j):1.i和j是否都为素数

                                                                                                       2.i+j==m

0
0
0
0
0
0
0
吴文光
吴文光
新手光能
新手光能

大家快回答啊

我加到40

我要回答