• 51 nod


    2.21

    1,首先根据唯一分解定理,任意一个大于1的自然数N,都可以分解成有限个自然数的乘积

    2,根据1,我先手动筛选了一波,(首先,质数在这里是必须要加到ans里的,orz先上代码

    #include <algorithm>
    #include <stdio.h>
    #include <string.h>
    #include <math.h>
    #define mem(a,b) memset(a,0,sizeof(a));
    using namespace std;
    typedef long long LL;
    inline int init() {
    char now, last; int sum = 0;
    while (now > '9' || now < '0') { now = getchar(), last = now; }
    while (now <= '9'&&now >= '0')sum = sum * 10 + now - '0';
    if (last == '-') return -sum;
    return sum;
    }
    int val[50005];
    void init(int n) {
    val[1]=1;
    for(int i = 1;i<=sqrt(n+50);i++)
    {
    if(!val[i]) {
    for(int j = 2;j<=n;j++) {
    val[j*i]++;
    }
    }
    }

    }
    int main() {
    mem(val,0);
    int n;
    scanf("%d",&n);
    init(n);
    int ans = 0;
    for(int i = 2;i<=n;i++) {
    if(val[i]==1) {
    ans++;
    }
    }
    printf("%d ",n-ans);
    return 0;
    }

    ///我这里的思路是利用筛子,来计数,计数器==1的加到ans里

    ///why?设 P ,N为质数  那么 P*i可能等于N*j,所以,为了排除重复的计数,只加计数为1的

    我身后空无一人,我怎敢倒下
  • 相关阅读:
    sqlserver 表操作 SQL篇
    C#知识点汇总
    DDL
    sqlserver2008简介
    面向对象继承
    IO文件流
    【帅刺猬课堂】Winform中使用WPF的UserControl
    KS Gantt甘特图控件通过递归加载无限层级的数据
    Office 每次打开需要重新配置的问题修复方法
    扩展方法
  • 原文地址:https://www.cnblogs.com/DreamKill/p/8456086.html
Copyright © 2020-2023  润新知