• (Problem 47)Distinct primes factors


    The first two consecutive numbers to have two distinct prime factors are:

    14 = 2 × 7 15 = 3 × 5

    The first three consecutive numbers to have three distinct prime factors are:

    644 = 2² × 7 × 23 645 = 3 × 5 × 43 646 = 2 × 17 × 19.

    Find the first four consecutive integers to have four distinct prime factors. What is the first of these numbers?

    题目大意:

    最小的两个具有两个不同质数因子的连续整数是:

    14 = 2 × 7 15 = 3 × 5

    最小的三个具有三个不同质数因子的连续整数是:

    644 = 2² × 7 × 23 645 = 3 × 5 × 43 646 = 2 × 17 × 19.

    找出最小的四个具有四个不同质数因子的连续整数。它们之中的第一个是多少?

    //(Problem 47)Distinct primes factors
    // Completed on Thu, 13 Feb 2014, 12:50
    // Language: C11
    //
    // 版权所有(C)acutus   (mail: acutus@126.com) 
    // 博客地址:http://www.cnblogs.com/acutus/
    
    #include<stdio.h>
    #include<stdbool.h>
    
    int a[1002];
    
    bool prim(int n)
    {
        int i;
        for(i = 2; i * i <= n; i++) {
            if(n % i == 0)  return false;
        }
        return true;
    }
    
    void init()
    {
        int i,j;
        i = 3;
        j = 1;
        a[0] = 2;
        while(j < 1000) {
            if(prim(i)) a[j++] = i;
            i += 2;
        }
    }
    
    bool judge(int n)
    {
        int i, flag, count;
        count = flag = 0;
    
        for(i = 0; i < 1000; i++) {
            while(n % a[i] == 0) {
                flag = 1;
                n = n / a[i];
            }
            if(flag) count++;
            flag = 0;
            if(count == 4) return true;
        }
        return false;
    }
    
    void solve()
    {
        int i;
        for(i = 20; i < 1000000;) {
            if(judge(i)) {
                if(judge(i + 1)) {
                    if(judge(i + 2)){
                        if(judge(i + 3)){
                            printf("%d %d %d %d
    ", i, i + 1, i + 2, i + 3);
                            return;
                        } else {
                            i += 4;
                            continue;
                        }
                    } else {
                        i += 3;
                        continue;
                    }
                } else {
                    i += 2;
                    continue;
                }
            } else {
                i++;
            }
        }
    }
    
    int main()
    {
        init();
        solve();
        return 0;
    }
    Answer:
    134043
  • 相关阅读:
    Linux中常用操作命令
    JQuery Each循环遍历每个元素
    get set
    Launch Screen在iOS7/8中的实现
    程序猿必备的Git教程
    浏览器的工作原理:新式网络浏览器幕后揭秘
    浏览器的工作原理:新式网络浏览器幕后揭秘
    游览器中javascript的执行过程
    游览器中javascript的执行过程
    浅析 Cordova for iOS
  • 原文地址:https://www.cnblogs.com/acutus/p/3547901.html
Copyright © 2020-2023  润新知