acwing867质因数分解(循环到根号n新写法)

n的质因数最多一个大于根号n
反证法:假设有两个,则两者相乘大于n
#include <bits/stdc++.h>

using namespace std;

int t,n;

void divide(){
	for(int i=2;i<=n/i;i++){ 
		if(n%i==0){
			int num=0;
			while(n%i==0){
				n/=i;// 防止出现被合数除 
				num++;
			}
			printf("%d %d\n",i,num);
		}
	}
	if(n>1) printf("%d 1\n",n);//可能出现一个大于根号n 的质因数 
	return;
}

int main(int argc, char** argv) {
	cin>>t;
	while(t--){
		cin>>n;
		divide();
		puts("");
	}
	return 0;
}

此处用
for(int i=2;i<=n/i;i++){ 

}
不用i*i<=n是因为i*i可能会破int
不用sqrt(),sqrt耗时间,且可能忘记转int

全部评论

相关推荐

若怜君欢:驾驶证去掉吧,PPT啥的也去掉,本硕课程去掉,导师和研究方向去掉;加入本硕排名(好才写);技能栏加入你会的那些控制算法和滤波算法,这个比你会啥啥啥软件更有用;获奖写上去,奖学金啊,有没有专利啊之类的 电机和硬件这一块,属于传统制造业,制造业实习并不多。多投一些攒攒经验,有实习最好,没有也不需要焦虑(制造业实习其实除了转正,没多大用处) 最后,划重点,等秋招开始后,把你所有社交软件都发一份简历上去,并经常更新,找人内推你!
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务