注册 登录
编程论坛 C++教室

我真没搞懂这两道题,希望能获得帮助

yang158 发布于 2020-03-08 20:21, 2477 次点击
11. 正 整 数 n ( n >1 ) 可 以 写 成 质 数 的 乘 积 形 式 , 称 为 整 数 的 质 因 数 分 解 。 例 如 , 12=2*2*3 , 18=2*3*3 , 11=11 。 设 计 一 个 算 法 求 n 这 样 分 解 后 各 个 质 因 数 出 现 的 次 数 , 采 用 vector 向 量 存 放 结 果 。
12. 有 一 个 整 数 序 列 , 所 有 元 素 均 不 相 同 , 设 计 一 个 算 法 求 相 差 最 小 的 元 素 对 的 个 数 。 如 序 列 4 、 1 、 2 、 3 的 相 差 最 小 的 元 素 对 的 个 数 是 3 , 其 元 素 对 是 ( 1 , 2 ) , ( 2 , 3 ) , ( 3 , 4 ) 。
9 回复
#2
xianfajushi2020-03-09 13:17
未知没弄明白的虾米?数学?编程语句?条件判断?逻辑处理?
#3
return_02020-03-09 14:03
???
题目要求?
#4
return_02020-03-09 14:06
深搜应该可以试一下
#5
return_02020-03-09 14:07
广搜也可以,虽快但写起来复杂
#6
return_02020-03-09 14:14
深搜面对数据小的
#7
return_02020-03-09 14:14
广搜比较全面
#8
return_02020-03-09 14:15
两个算法推荐好了,要我写代码吗?
#9
不再有bug2020-03-10 10:27
第一题写过类似的,用素数筛选法,你改下就行了
#include<iostream>
#include<cstdio>
using namespace std;
bool a[65433];
int main(){
    int n;
    cin>>n;
    cout<<n<<"=";
    for(int i=2;i<65433;i++){
        a[i]=true;
    }
    for(int i=2;i<=n;i++){
        if(a[i]){
            for(int j=2*i;j<=n;j+=i){
                a[j]=false;
            }
        }
    }
    for(int i=2;i<=n;i++){
        while(a[i]&&n%i==0){
            if(n==i){
                cout<<n<<endl;
                return 0;
            }
            else{
                printf("%d*",i);
                n=n/i;
            }
        }
    }
    return 0;
}
#10
不再有bug2020-03-10 11:02
回复 8楼 return_0
你咋所有的题目都是深搜呢?这两道题明显不是吧
1