UVA 10892 - LCM Cardinality(数学题)

本文提供了一个程序实现,用于找到小于等于指定数的所有质数,并计算一个基于质因数的数学表达式的值。通过遍历质数列表,程序能够有效地分解输入整数的质因数,然后应用特定的数学公式来计算结果。

题目链接

写写,就ok了。

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <string>
 4 #include <cmath>
 5 #include <ctime>
 6 #include <cstdlib>
 7 #include <iostream>
 8 using namespace std;
 9 #define MOD 1000000
10 #define LL long long
11 int prim[1000001];
12 int o[1000001];
13 int main()
14 {
15     int i,j,num = 0,temp;
16     LL n;
17     for(i = 2;i <= 1000;i ++)
18     {
19         if(!o[i])
20         {
21             for(j = i+i;j <= 1000000;j += i)
22             o[j] = 1;
23         }
24     }
25     for(i = 2;i <= 1000000;i ++)
26     {
27         if(!o[i])
28         prim[num++] = i;
29     }
30     while(cin>>n)
31     {
32         if(!n) break;
33         cout<<n<<" ";
34         LL ans = 1;
35         for(i = 0;i < num;i ++)
36         {
37             temp = 0;
38             while(n%prim[i] == 0)
39             {
40                 temp ++;
41                 n /= prim[i];
42             }
43             ans *= ((temp+1)*2-1);
44         }
45         if(n != 1)
46         ans *= 3;
47         cout<<ans/2 +1<<endl;
48     }
49     return 0;
50 }

转载于:https://www.cnblogs.com/naix-x/p/3381048.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值