zoukankan      html  css  js  c++  java
  • hdu 2582 f(n) 数学

    打表找规律:

    当n为质数是,GCD(n)=n;

    当n为质数k的q次方时,GCD(n)=k;

    其他情况,GCD(n)=1.

    代码如下:

     1 #include<iostream>
     2 #include<cstdlib>
     3 #include<stdio.h>
     4 #define ll long long
     5 #define M 1000001
     6 using namespace std;
     7 ll a[M];
     8 int prime[79000],cnt;
     9 bool f[M];
    10 int fac(int n)
    11 {
    12     for(int i=0;i<cnt&&prime[i]*prime[i]<=n;i++){
    13         if(n%prime[i]==0){
    14             n/=prime[i];
    15             while(n%prime[i]==0) n/=prime[i];
    16             if(n==1) return prime[i];
    17             return 0;
    18         }
    19     }
    20     return 0;
    21 }
    22 void init()
    23 {
    24     int i,j,k;
    25     cnt=0;
    26     for(i=2;i<M;i++){
    27         if(f[i]==0) prime[cnt++]=i;
    28         for(j=0;j<cnt&&i*prime[j]<M;j++){
    29             f[i*prime[j]]=1;
    30             if(i%prime[j]==0) break;
    31         }
    32     }
    33 }
    34 int main()
    35 {
    36     int i,k,n;
    37     init();
    38     while(scanf("%d",&n)!=EOF){
    39         ll ans=0;
    40         for(i=3;i<=n;i++){
    41             if(f[i]==0) ans+=i;
    42             else{
    43                 k=fac(i);
    44                 if(k) ans+=k;
    45                 else ans+=1;
    46             }
    47         }
    48         printf("%I64d
    ",ans);
    49     }
    50     return 0;
    51 }
    View Code
  • 相关阅读:
    四则运算02
    第三周学习进度条
    《构建之法》阅读笔记1
    第二周学习进度条
    四则运算01
    第八周进度条
    每日站立会日07,08
    每日站立会议06
    每日站立会议05
    每日站立会议04
  • 原文地址:https://www.cnblogs.com/xin-hua/p/3273497.html
Copyright © 2011-2022 走看看