2021-04-30

                                                                      关于素数的算法

1.质因数的分解

一个数x能够被分解成两个素数相乘x=a*b,求较大质数。

思路:从2到根号x找出较小x的因数,用x/较小因数即可。

#include <iostream>

using namespace std;
#include <cmath>
int main()
{
    int x;
    cin>>x;
    int t=sqrt(x);
    for(int i=2;i<=t;i++)
    {
        if(x%i==0)
        {
            cout<<x/i<<endl;
            break;
        }

    }
    return 0;
}

2.较大质数

输入一个数n,求出2-n最大质数;

思路:公式

 for(int i=1;i<=n;i++)
        {
            ans+=log10(i);

        }即可

#include <iostream>

using namespace std;
#include <cmath>
int main()
{
    int t,n;
    double ans;
    cin>>t;
    while (t--){
        cin>>n;
        ans=0;
        for(int i=1;i<=n;i++)
        {
            ans+=log10(i);

        }
        cout<<int(ans)+1<<endl;
    }
    return 0;
}

3.素数定理

素数定理(prime number theorem)是素数分布理论的中心定理,是关于素数个数问题的一个命题: [1]  设x≥1,以π(x)表示不超过x的素数的个数,当x→∞时,π(x)~Li(x)或π(x)~x/ln(x)。(Li(x)为对数积分) 

求2-10exp(n)的素数

思路:直接套公式即可

4.

给出一个数 分解成多个质数相乘,求最小的两个质数的积(不去重),否则输入-1;

#include <iostream>
#include <cmath>
#include <vector>
#include <cstdio>
#include <algorithm>
using namespace std;
typedef long long LL;
LL a[110];
int t,n;
int main()
{
   scanf("%d",&t);
   while(t--)
    {
        scanf("%d",&n);
        for(int i=0;i<n;i++) scanf("%lld",&a[i]);
        vector<LL> v;
        for(int i=0;i<n;i++)
        {
            for(int j=2;(LL)j*j<=a[i];j++)
            {
                while(a[i]%j==0)
                {
                    v.push_back(j);
                    a[i]/=j;
                }
            }
            if(a[i]!=1) v.push_back(a[i]);
        }
        sort(v.begin(),v.end());
        if(v.size()<2)  printf("-1\n");
        else printf("%lld\n",v[0]*v[1]);
    }
    return 0;
}

5.斯特林公式

求n!复杂度为o(n)

n!=\sqrt[]{2pin}\left ( n/e \right )exp(n))

这条信息似乎是来自服务器硬件监控系统的日志记录。它包含了关于设备状态的具体细节,下面是对该条目的一些解释: - **Result Status=235**:这表示返回结果的状态码为235,可能是系统内部定义的一种标识符,用于指示操作的结果或错误类型。 - **Msg='...'**:这是消息内容部分,详细描述了事件的信息。 具体拆解如下: 1. **HIH-S-157753ZZ** - 可能是一个唯一标识此服务器或其组件的序列号或其他识别标志。 2. **Dell PowerEdge R730xd** - 表明这是一个戴尔品牌的PowerEdge R730xd型号服务器。 3. **6D0QLP2** - 这可能是资产标签或者是BIOS版本等进一步识别信息。 4. **使用 | 内存 | Warning | Memory Device A: Correctable memory error logging limit reached Presence detected** - “使用” 和“内存”表明问题是跟内存使用的相关情况; - "Warning" 指出了这个问题是一个警告级别的事项而非致命错误。 - 最重要的是这部分:“Memory Device A: Correctable memory error logging limit reached”,意思是说A内存设备已经达到了可纠正内存错误的日志上限。尽管这些错误可以自动修复(Correctable Errors),但如果频繁发生则意味着可能存在潜在的问题需要关注。 5. **时间戳信息 (例如 2021-04-30 等)** – 显示了相关的日期范围或许代表保修期或是某些关键事件的时间段。 6. **IP地址 (如 10.29.144.220)** - 提供了网络位置的相关线索以便定位具体的机器。 7. 其他数值比如最后面提到的一个数字也可能对应某种计数器或者其他特定含义的数据点。 ### 解决建议 如果发现这样的告警应该尽快检查物理内存模块是否有损坏或者松动的情况,并考虑更新固件以及加强环境控制减少温度变化对硬件的影响等因素以延长使用寿命并提高稳定性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值