zoukankan      html  css  js  c++  java
  • 约数

     

        4 反素数

           198. 反素数 https://www.acwing.com/problem/content/description/200/

            

          确定前10个质数的指数,指数连续且单调递减 总乘积不超过n ,同时记录约数的个数

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 #define int long long
     4 int p[10] = {2,3,5,7,11,13,17,19,23,29};
     5 int n,ans,myyues = 1;
     6 void dfs(int index,int yueshu,int num){//指数的位置 约数个数 数字
     7     if(index > 10) return;
     8     if(yueshu > myyues ||(yueshu == myyues && num < ans))
     9         ans = num,myyues = yueshu;
    10     for(int i = 1; i <= 30; i++){
    11         if(p[index] * num > n) break;
    12         //一层一层走的
    13         dfs(index + 1,yueshu*(i + 1),num *= p[index]);
    14     }
    15 }
    16 signed main(){
    17     ios::sync_with_stdio(0);
    18     cin >> n;
    19     dfs(0,1,1);
    20     cout << ans;
    21     return 0;
    22 }
    View Code

    二  最大公约数

    互质与欧拉函数

        

    void euler(){
        m = 0;
        memset(v,0, sizeof(v));
        for(int i = 2; i <= n; i++){
            if(!v[i]) v[i] = 1,prime[++m] = i,phi[i] = i - 1;
            for(int j = 1; j <= m && i * prime[j] <= n; j++){
                v[i * prime[j]] = 1;
                phi[i * prime[j]] = phi[i] *(i % prime[j] ? prime[j] - 1 : prime[j]);
                if(i % prime[j] == 0) break;
            }
        }
    }
    View Code

       201. 可见的点 https://www.acwing.com/problem/content/203/

    在一个平面直角坐标系的第一象限内,如果一个点(x,y)与原点(0,0)的连线中没有通过其他任何点,则称该点在原点处是可见的。

    例如,点(4,2)就是不可见的,因为它与原点的连线会通过点(2,1)。

    部分可见点与原点的连线如下图所示:

    3090_1.png

    编写一个程序,计算给定整数N的情况下,满足0xyN0≤x,y≤N的可见点(x,y)的数量(可见点不包括原点)。

    输入格式

    第一行包含整数C,表示共有C组测试数据。

    每组测试数据占一行,包含一个整数N。

    输出格式

    每组测试数据的输出占据一行。

    应包括:测试数据的编号(从1开始),该组测试数据对应的N以及可见点的数量。

    同行数据之间用空格隔开。

    数据范围

    1N,C10001≤N,C≤1000

    输入样例:

    4
    2
    4
    5
    231
    

    输出样例:

    1 2 5
    2 4 13
    3 5 21
    4 231 32549
    #include <bits/stdc++.h>
    using namespace std;
    #define int long long
    int v[1010],phi[1010],prime[1010];
    int n,m,t,ans;
    void euler(){
        m = 0;
        memset(v,0, sizeof(v));
        for(int i = 2; i <= n; i++){
            if(!v[i]) v[i] = 1,prime[++m] = i,phi[i] = i - 1;
            for(int j = 1; j <= m && i * prime[j] <= n; j++){
                v[i * prime[j]] = 1;
                phi[i * prime[j]] = phi[i] *(i % prime[j] ? prime[j] - 1 : prime[j]);
                if(i % prime[j] == 0) break;
            }
        }
    }
    signed main(){
        //freopen("in","r",stdin);
        ios::sync_with_stdio(0);
        cin >> t;
        for(int i = 1; i <= t; i++) {
            cin >> n;
            euler();
            ans = 0;
            for (int j = 2; j <= n; j++) ans += (2 * phi[j]);
    
            cout << i << " " << n << " " << ans + 3  << endl;
        }
        return 0;
    }
    View Code
     

      

      

  • 相关阅读:
    并发编程练习题
    Python GIL(Global Interpreter Lock)
    并发编程之多进程
    并发编程之协程
    并发编程之多线程
    python 闯关之路三(面向对象与网络编程)
    python笔试题(2)
    开发一个支持多用户在线的FTP程序
    黄哥漫谈Python 生成器。
    scrapy 报错 no module named win32api 的解决方案
  • 原文地址:https://www.cnblogs.com/xcfxcf/p/12317020.html
Copyright © 2011-2022 走看看