zoukankan      html  css  js  c++  java
  • 幸运数

    题目描述

    幸运数是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法”生成

    首先从1开始写出自然数123456....
    1 就是第一个幸运数。
    我们从2这个数开始。把所有序号能被2整除的项删除,变为:
    1 _ 3 _ 5 _ 7 _ 9 ....
    把它们缩紧,重新记序,为:
    1 3 5 7 9 .... 。这时,3为第2个幸运数,然后把所有能被3整除的序号位置的数删去。注意,是序号位置,不是那个数本身能否被3整除!! 删除的应该是5,11 17 ...
    此时7为第3个幸运数,然后再删去序号位置能被7整除的(1939...)
    .......
    最后剩下的序列类似:
    1 3 7 9 13 15 21 25 31 33 37 43 49 51 63 67 69 73 75 79 ...

    输入

    输入两个正整数m n 用空格分开 (m < n < 1000*1000)

    输出

    程序输出 位于m和n之间的幸运数的个数(不包含m和n)。

    样例输入

    1 20

    样例输出

    5

    样例输入2

    30 69

    样例输出2

    8

    借鉴素数表 打表

     1 #include <stdio.h>
     2  
     3 const int Max=1000010;
     4 int num;
     5 int p[Max]={0};
     6  
     7 void make(int n)
     8 {
     9     for(int i=2;i<=n;i++)
    10     {
    11      
    12         if(p[i]==0) 
    13         {
    14             int t=i;
    15             num=0;
    16             for(int g=1;g<=n;g++)
    17             {
    18                 if(p[g]==0)
    19                 {
    20                     num++;
    21                     if(num==t)
    22                     {
    23                         p[g]=1;
    24                         num=0;
    25                     }
    26                 }
    27             }
    28         }
    29     }
    30 }
    31  
    32 int main()
    33 {
    34     int m,n;
    35     scanf("%d %d",&m,&n);
    36      
    37     make(n);
    38     int ans=0;
    39     for(int i=m+1;i<n;i++)
    40     {
    41         if(p[i]==0) ans++;
    42     }
    43     printf("%d",ans);
    44     return 0;
    45 }
  • 相关阅读:
    如何打开肉鸡的3389端口(xp的)
    XP鲜为人知的实用技巧(一)
    利用Ms08067工具进行溢出攻击
    教你建一个别人看不到打不开的文件夹
    在IE上显示自己的名字
    QQ使用的七大非常规秘籍
    第五篇:Python函数基础篇
    Centos7之Systemd(Service文件)详解
    Linux GCC make文件的写法3
    DSP/BIOS学习笔记——2.SWI
  • 原文地址:https://www.cnblogs.com/jiamian/p/10674146.html
Copyright © 2011-2022 走看看