#include<bits/stdc++.h>
using namespace std,int main()(
int num=0;
cin>>num;
//保证 num>=100,且在 int 范围内int max primedivisor=0;
int cnt=1;
for(inti=2;i*i<=num;i++){
if(numgi==0){
int tmp=l/while(num多i==0)num/mi,tmp++;
max primedivisor=max(max primedivisor i);
cnt*=tmP;
max primedivisor max(max primedivisor,num);
if(num>l)cnt*=2;
cout<<max primedivisor<<" "<<ent<<" \n" ;
return 0;
代码中max_primedivisor=max(max_primedivisor,num);这句话去掉对答案没有影响。
当读人的 num=p*q,其中p<q,且p,q为质数,则for循环中i遍历到q时退出循环。
该算法的最坏时间复杂度为
O(log num)
.0(√num)
0(num)
O( num√num)
当读人 2021 时输出为
43 2
43 4
47 2
47 4
当读人的数 num=p* p* p*q*q*r*r*s*t时,其中 p<q<r<s<t,且p,q,r,s,t均为质数,则输出的第二个数()
不确定
9
12
144
在最好的情况下,时间复杂度为
0(log num)
0(√num)
0(num)
0(num√num)
发表评论