不知道怎么写

B2084 质因数分解

hjb13357896690 @ 2024-09-04 21:16:04

#include <bits/stdc++.h>
#define ll long long
using namespace std;
bool pss(int n)
{
    //特判可不写 
    for(int i=2;i<=sqrt(n);i++)
    {
        if(n%i==0)
        {
            return 0;
        }
    }
    return 1;
}
int fj(int n)//分解,看看是不是质因数,如果是,则算出另一个,再打擂 
{
    for(int i=2;i<=;i++)//咋写 
    {

    }
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    int n;
    cin>>n;

    return 0;
}

by _Supernova @ 2024-09-04 21:18:58

没必要这么麻烦,找一下性质。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int n;
int main(void) {
    cin >> n;
    for (int i = 2; i <= n; ++i) {
        if (n % i == 0) {
            printf("%d", n / i);
            return 0;
        }
    }
    return 0;
}

by _Supernova @ 2024-09-04 21:20:11

看似 O(n),实则 O(\sqrt(n))


by yxj725 @ 2024-09-04 21:27:01

#include<bits/stdc++.h>
using namespace std;
int main (){
    int a,ans;
    cin>>a;
    for (int i=2;i<a;i++) {
        if (a%i==0) {
            ans=a/i;
            cout<<ans<<endl;
            break;
        }

    }
return 0;
}

其实很简单。首先你需要知道一个叫处一之外n的最小因数都是质数的东东,然后整个题就 so easy 了


by yxj725 @ 2024-09-04 21:27:28

@hjb13357896690 求关QWQ


by yxj725 @ 2024-09-04 21:30:19

#include<bits/stdc++.h>
using namespace std;
int main (){
    int a,ans;
    cin>>a;
    for (int i=2;i<=sqrt(a);i++) {
        if (a%i==0) {
            ans=a/i;
            cout<<ans<<endl;
            return 0;
        }

    }
return 0;
}

这样也可,感觉会更快QWQ


by huangzicheng114514 @ 2024-09-04 21:39:37

@hjb13357896690 没那么复杂。 算出较小因数(蛮力枚举就行,能过),再用n除以它;

a=n,b是循环判断用的。


by huangzicheng114514 @ 2024-09-04 21:40:24

@hjb13357896690 没那么复杂。 算出较小因数(蛮力枚举就行,能过),再用n除以它; while(1){

if(a%b==0){cout<<a/b;

break;}

    else b++;//TODO

}// a=n,b是循环判断用的。


by huangzicheng114514 @ 2024-09-04 21:40:58

求关QWQ


by huangzicheng114514 @ 2024-09-04 21:43:19

@hjb13357896690 其实有两道一样的题; 另一道: https://www.luogu.com.cn/problem/P1075


by hjb13357896690 @ 2024-09-05 18:13:03

@yxj725 已关,再求关


| 下一页