首页 > 其他分享 >数论有关题

数论有关题

时间:2023-09-13 17:00:22浏览次数:52  
标签:输出 le 正整数 数论 有关 times int 质数

tax

题目:

小码哥要交税,交的税钱是收入 \(n\) 的最大因子(该最大因子为不等于 \(n\) 的最大因子),但是现在小码哥为了避税,把钱拆成几份(每份至少为 \(2\)),使交税最少,输出税钱。

格式:

输入格式:一个正整数 \(n\) 表示所以的钱数。

输出格式:输出一个正整数,表示税钱。

样例:

输入:4

输出:2

备注:

对于 \(30\%\) 的分数,\(2 \le n \le 100\);

对于 \(50\%\) 的分数,\(2 \le n \le 10000\);

对于 \(100\%\) 的分数,\(2 \le n \le 2 \times 10^9\)。

思路:

  1. 如果 \(n\) 为质数,则不等于 \(n\) 的最大因子为 \(1\);
  2. 如果 \(n\) 为偶数,由强哥德巴赫猜想(任何一个大于 \(2\) 的偶数都可以表示成两个素数之和)知,\(n\) = 质数+质数,此时交税最少,应输出 \(2\)。
  3. 如果 \(n\) 为奇数,奇数 = 奇数+偶数,我们尽可能将 \(n\) 拆成一个质数和一个偶数,因为除 \(2\) 以外所有质数均为奇数,此时交税最少,应输出 \(3\)。

代码:

#include<iostream>
#include<cstdio>
using namespace std;

int n;

bool prime(int num) {
    for (int i = 2; i * i <= num; i++) {
        if (num % i == 0) {
            return false;
        }
    }
    return true;
}

int main() {
    cin >> n;
    if (prime(n)) {
        cout << 1;
    } else if (n % 2 == 0) {
        cout << 2;
    } else if (prime(n-2)) {
        cout << 2;
    } else {
        cout << 3;
    }
    return 0;
}

约数个数

题目:

给定正整数 \(n\),求 \(n\) 的约数个数。

格式:

输入格式:一个正整数 \(n\)。

输出格式:输出一行一个整数表示答案。

样例:

输入:12

输出:6

备注:

\(1 \le n \le 10^9\)

思路:

  1. 直接枚举从 \(1\) 到 \(\sqrt n\) 的所有数

  2. 求约公式如下:

    若 \(n=\prod_{i=1}^{k}p_i^{a_i}=p_1^{a_1} \times p_2^{a_2} \times ... \times p_k^{a_k}\) ,其中 \(p_i\) 为质数,\(a_{i}\) 为正整数,则 \(n\) 的正约数个数为 \(f(n)=\prod_{i=1}^k(a_i+1)=(a_1+1) \times (a_2+1) \times ... \times (a_k+1)\)

代码:

#include<iostream>
#include<cstdio>
using namespace std;

int main() {
    int n;
    cin >> n;
    int ans = 0;
    for (int i = 1; i * i <= n; i++) {
        if (n%i == 0) {
            ans += 2; // 加两个数,一个是i,另一个是n/i
        } 
        if (i*i == n) {
            ans--; // 特判i*i=n
        }
    }
    cout << ans;
    return 0;
}

标签:输出,le,正整数,数论,有关,times,int,质数
From: https://www.cnblogs.com/catting123/p/17700138.html

相关文章

  • Java有关链表的基本操作
    上一篇发表的数组的基本操作,但是数组有优势也有劣势:·具体的优势是:拥有高效的随机访问能力·劣势是:由于排列紧密相连,插入和删除元素都会导致大量元素被迫移动,影响效率。接下来要阐述的数据结构是链表:·先看看单向链表的结构:单向链表的每一个节点又包含两个部分,一部分......
  • c++中的数论知识
    写在开头:word的公式打不上来,只能截图了一.组合数学(1)加法定理与乘法原理加法原理:做一件事情,完成它可以有n类办法,在第一类办法中有m1种不同的方法,在第二类办法中有m2种不同的方法,……,在第n类办法中有mn种不同的方法。那么完成这件事共有N=m1+m2+…+mn种不同的方法。乘法原理:做一......
  • 有关交换机内部报文转发和ACL控制的原理
    交换机内部的报文在VLAN间的转发是由交换机的三层转发引擎(L3ForwardingEngine)完成的。三层转发引擎是交换机的一种功能模块,它可以根据报文的目的IP地址和交换机的路由表,选择最佳的下一跳地址,并将报文转发到相应的VLAN接口。交换机内部的报文在VLAN间的转发是否受到ACL(AccessC......
  • 数论杂谈
    数论杂谈记录一些小小的东西贝尔数(bell)\(Bell(n)\)(\(B_n\))表示有\(n\)个元素的集合划分成若干个互不相交的子集的方案数\[B_0=1,B_1=1,B_2=2,B_3=5,\dots\]\[B_0=1,B_{n+1}=\sum_{i=0}^nC_n^i\timesB_i\]......
  • live555作为RTSP流媒体服务器时Server端多track而客户端仅请求一个track,当客户端关闭
    当我们使用live555作为流媒体服务器时,某个通道对应的所有客户端断开后,不能正常回调关闭。某一通道同时支持视频和音频输出,即video和audio两个trackVLC和EasyPlayer播放库来中的RTSPClient则都会请求(所以不存在问题);而某些客户端则只请求了一个track,比如video;此时再关闭......
  • 镭拓激光揭秘激光圆管切割机多少钱一台与哪些因素有关
    编辑:镭拓激光激光切割机作为金属类材料加工中的重要设备,在金属类材料的切割工艺中有着不可替代的作用。激光切割机设备类型还是比较多的,其中激光圆管切割机就是专用于金属管材类材料切割使用的机器。你知道激光圆管切割机多少钱一台吗?本篇我们就来聊聊激光圆管切割机的价格问题。激......
  • 有关lvs高可用架构
    我们可以用多台LVS来做高可用。这里又会有两种选择:一是主备模式/主主模式,可以利用Keepalived的VRRP功能,但是大规模生产环境中,用集群模式更好,因为其同时提高了伸缩性和可用性,而前者只解决了可用性(当然,也更简单),LVS是基于IP层的负载均衡,它通过修改数据包的目标IP或MAC地址来实现负......
  • 数论基础
    莫比乌斯反演定义先讲讲莫比乌斯函数的定义:\(\mu(x)=\begin{cases}1&n=1\\0&n含有平方因子\\(-1)^k&k为n的本质不同质因子个数\end{cases}\)我们对\(n\)进行质因数分解,\(n=\prod_{i=1}^kp_i^{c_i}\),其中\(p_i\)是质因子,而\(c_i\ge1\).\(n=1\),\(\mu(n)=......
  • 数论其一
    一、质数1.质数的定义:如果一个正整数无法被除了1和它本身以外的任何自然数整除,那么这个数是质数。否则,这个数是合数。需要注意的是,1既不是质数也不是合数。2.埃筛:2.埃筛:问题:给定一个正整数\(n\),找到\(1\simn\)中的所有质数。思路:我们可以从\(2\)开始,从小到大扫描每个......
  • 数论中一个有趣的小结论
    对于任意奇质数\(p\),对于任意整数\(k<p-1\),有$p|\sum_{i=1}{p-1}ik$证明:取\(p\)的原根\(g\),由简化剩余系的性质知:在\(\modp\)意义下,有\[\{g,2g,\cdots,(p-1)g\}=\{1,2,\cdots,p-1\}\]于是\[\sum_{i=1}^{p-1}i^k\equiv\sum_{i=1}^{p-1}(gi)^k\equiv......