1007补

作者: 笔墨流年乱浮生 | 来源:发表于2018-08-16 14:26 被阅读0次

//1007 素数对猜想(20 分)
//让我们定义d_n=p_n+1 - p_n,其中p_i是第i个素数。显然有d_1=1,且对于n>1有d_n是偶数
//“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。其中'_'表示下标
//现给定任意正整数N(<10^5),请计算不超过N的满足猜想的素数对的个数。
//输入格式:
//输入在一行给出正整数N。
//输出格式:
//在一行中输出不超过N的满足猜想的素数对的个数。
//
//输入样例:
//20
//输出样例:
//4

C:

#include <stdio.h>
#include <math.h>
int main(int argc, const char * argv[])
{
    
    int N;//正整数N
    scanf("%d", &N);
    int prime[100000] = {2,3};//2,3是素数但不是猜想素数对,为方便,进行这样初始化,事实上数组大小不需要这么大。
    int paircnt = 0;//素数对个数,当前是2,3,素数对个数为0
    int current = 1;//标记,当current==1时表示是素数,current==0时非素数
    int primecnt = 2;//为了方便对素数数组的添加设定的索引
    for (int i = 4; i <= N; i++) {//从4开始到N找其中的素数
        current = 1;//每次循环标记初始化为1
//        for (int j = 2; j <= sqrt(i); j++) {//从2开始,只要判断“2~根号i”间的素数不能被当前数整除,则为素数
        for (int j = 0; prime[j] <= sqrt(i); j++) {
//            if (i % j == 0) {//整除,非素数
            if (i % prime[j] == 0) {
                current = 0;//标记为0
                break;//只要有一个j使i为非素数,就可以跳出循环了
            }
        }
            if (current == 1) {//如果标记为1,即当前数为素数的话
                prime[primecnt] = i;//放入素数数组
                primecnt++;//数组索引+1
            }
    }
//    for (int i = 0; i < primecnt; i++) {      //这段注释用于验证上述程序是否正确
//        printf("%d ",prime[i]);
//    }
    for (int i = 0; i < primecnt; i++) {
        if(prime[i+1] - prime[i] == 2)  paircnt++;  //这里要注意后面减前面,因为数组是0开始的
    }
            printf("%d\n",paircnt);
    return 0;
}

与之前1007相比,此方案只需要把当前数和之前的素数相余。这样循环次数可以减少很多。这是我在做1013时看OliverLew的思路才明白的。

相关文章

  • 1007补

    //1007 素数对猜想(20 分)//让我们定义d_n=p_n+1 - p_n,其中p_i是第i个素数。显然有d...

  • iOS 播放系统提示音和使用系统方法播放本地提示音

    1、iPhone系统音效 AudioServicesPlaySystemSound(1007); //其中1007...

  • 2019-11-09

    1007 7046 4534 1007 8528 8942 1009 3606 0571 1001 0155 85...

  • 暑期行与思 8.18

    字数:1007 今天,我也上演了一场开学前补作业的戏份。 01 每日一练对我名不副实 教师跟学生一样,假期里也要完...

  • Day279-1009(补1007)筹备兼职

    RYT的教培证书终于拿到了,我也觉得是时候开始自己预订的兼职工作了。于是给自己定下了兼职前的准备工作,第一周把体式...

  • 最大子序列和问题

    本题来自PAT1007

  • 毕竟人间沧桑,归来仍是少年

    光,常驻人间。 ——题记 公元1007年,...

  • 1007

    //1007 素数对猜想(20 分)//让我们定义d_n=p_n+1 - p_n,其中p_i是第i个素数。显然有d...

  • 1007

    国庆长假结束,真的是在家放松,电脑也没开过,本来要写的东西也没写。思绪很乱,没有工作日的空灵,写作计划不能断,明天...

  • 1007

网友评论

      本文标题:1007补

      本文链接:https://www.haomeiwen.com/subject/gstobftx.html