标签:make turn tomat imm space other using ever which
InputThe first line contains the number of queries t (t <= 10^6). Each query consist of one natural number n (1 <= n <= 10^6).OutputFor each n given in the input output the value of Sn.Sample Input
13 1 2 3 4 5 6 7 8 9 10 100 1000 10000
Sample Output
0 1 1 2 2 2 2 3 3 4 28 207 1609
被减数P 一定大于减数Q,并且P,Q相差不大,转化成了当切仅当P为整数的时候。
威尔逊定理:当且仅当p为素数时:( p -1 )! ≡ -1 ( mod p )
通过威尔逊定理,(P-1)!+1≡ 0 ( mod p ),本题就转化成求3*k+7是否为素数的问题。
#include <stdio.h> #include <math.h> #include <string.h> #include <stdlib.h> #include <iostream> #include <sstream> #include <algorithm> #include <set> #include <queue> #include <stack> #include <map> using namespace std; #define mod 1000000 #define N 3000005 typedef long long LL; int prime[N]; bool vis[N]; int val[N]; int pn=0; int ans[N]; int main () { for (int i = 2; i < N; i++) { if (vis[i]) continue; val[i]=1; prime[pn++] = i; for (int j = i; j < N; j += i) vis[j] = 1; } for(int i=1;i<=1000000;i++) { ans[i+1]=ans[i]+val[3*i+10]; } int t; while(~scanf("%d",&t)) { int n; while(t--) { scanf("%d",&n); cout<<ans[n]<<endl; } } }
标签:make turn tomat imm space other using ever which
原文地址:http://www.cnblogs.com/ygtzds/p/7867774.html