zoukankan      html  css  js  c++  java
  • 1675 大质数 2

    1675 大质数 2

     

    时间限制: 1 s
    空间限制: 1000 KB
    题目等级 : 钻石 Diamond
     
     
     
    题目描述 Description

    小明因为没做作业而被数学老师罚站,之后数学老师要他回家把第n个质数找出来。

    小明于是交给聪明的你。请你帮忙!【wikioi-1530】

    …………………………以上为背景…………………………

    老师怀疑小明仅仅是找到第n个质数,于是又叫小明把1到n以内(不包括n)的质数全部找出来。小明又找到了你……

    输入描述 Input Description

    一个正整数n。

    (1<=n<=1000000)

    输出描述 Output Description

    n以内的质数,每个一行。

    样例输入 Sample Input

    233

    样例输出 Sample Output

    2
    3
    5
    7
    11
    13
    17
    19
    23
    29
    31
    37
    41
    43
    47
    53
    59
    61
    67
    71
    73
    79
    83
    89
    97
    101
    103
    107
    109
    113
    127
    131
    137
    139
    149
    151
    157
    163
    167
    173
    179
    181
    191
    193
    197
    199
    211
    223
    227
    229          //(不含n=233)

    数据范围及提示 Data Size & Hint

    注意优化算法

    分类标签 Tags

    暴力。。。。。。。
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<cstdlib>
     5 #include<ctime>
     6 #define ll long long int
     7 using namespace std;
     8 ll n;
     9 ll pd[14]={10,35,77,535,71497,2,3,5,7,11,3161};
    10 ll fastmul(ll a,ll b)
    11 {
    12     ll r=0;
    13     ll base=a;
    14     while(b!=0)
    15     {
    16         if(b%2!=0)
    17         {
    18             b--;
    19             r=(r+base)%n;
    20         }
    21         b=b/2;
    22         base=(base+base)%n;
    23     }
    24     return r%n;
    25 }
    26 ll fastpow(ll a,ll b)
    27 {
    28     ll r=1;
    29     ll base=a;
    30     while(b!=0)
    31     {
    32         if(b%2!=0)
    33         r=fastmul(r,base)%n;
    34         base=fastmul(base,base)%n;
    35         b=b/2;
    36     }
    37     return r%n;
    38 }
    39 ll check(ll n)
    40 {
    41     if(n==2)
    42     {
    43         return 1;
    44     }
    45     if(n<2&&(n%2==0))
    46     {
    47         return 0;
    48     }
    49     for(ll i=0;i<11;i++)
    50     {
    51         ll x=pd[i];
    52         if(x%n==0)
    53         continue;
    54         ll ans=fastpow(x,n-1)%n;
    55         if(ans!=1)
    56         return 0;
    57     }
    58     return 1;
    59 }
    60 int main()
    61 {
    62     //srand(time(0));
    63     //scanf("%lld",&n);
    64     cin>>n;
    65     for(int i=1;i<=n;i++)
    66     {
    67         if(check(i))
    68         {
    69             printf("%d
    ",i);
    70         }
    71     }
    72     
    73     return 0;
    74 }
     
  • 相关阅读:
    Codeforces Round #325D (Div. 2) (DP)
    Codeforces Round #382 (Div. 2) (模拟|数学)
    HDU5950-Recursive sequence(矩阵快速幂)
    9. javacript高级程序设计-客户端检测
    8. javacript高级程序设计-BOM
    7. javacript高级程序设计- 函数表达式
    6. javacript高级程序设计-面向对象设计
    Js注释
    5. javacript高级程序设计-引用类型
    4. javacript高级程序设计-变量、作用域和内存问题
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/6744225.html
Copyright © 2011-2022 走看看