zoukankan      html  css  js  c++  java
  • UVA 10200 Prime Time (打表)

    http://acm.hust.edu.cn/vjudge/contest/127946#problem/D

    分析:n可根据公式 f(n) = n*n+n+41得到f(n),f(n)可能是素数也可能不是素数,求a到b之间的数可根据公式得到素数的百分比

    #include<stdio.h>
    #include<math.h>
    #include<algorithm>
    #include<string.h>
    #include<stdlib.h>
    
    using namespace std;
    
    const int N = 10010;
    typedef long long ll;
    
    int num[N];//num[i]表0到i这个数之间的数可根据公式得到素数的数有多少个
    
    int judge(int n)
    {
        int k = sqrt(n);
        for(int i = 2 ; i <= k ; i++)
        {
            if(n % i == 0)
                return 0;
        }
        return 1;
    }
    
    int main()
    {
        int a, b;
        memset(num, 0, sizeof(num));
        num[0] += judge(41);
        for(int i = 1 ; i < N ; i++)
            num[i] = num[i - 1] + judge(i * i + i + 41);
        while(~scanf("%d%d", &a, &b))
        {
            int sum1, sum;
            sum1 = num[b] - num[a] + judge(a * a + a + 41);
            sum = b - a + 1;
            printf("%.2f
    ", (1.0 * sum1 / sum) * 100 + 1e-8);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    CSRF攻击原理
    大前端
    尊敬自己,才能拥有改变的力量
    重温尼采语录 序章
    人生的弹性 -- 观《聚宝盆》有感
    求学梦
    爱国情怀
    雾中见我
    找东西
    走在路上的感悟
  • 原文地址:https://www.cnblogs.com/daydayupacm/p/5768809.html
Copyright © 2011-2022 走看看