解题思路:
基于算术基本定理
注意事项:
参考代码:
#include<bits/stdc++.h> int main(){ long long n,ans = 0,index; int sum; scanf("%lld",&n); for(index = 2;index * index <= n && n != 1;index++){ //index * index <= n这个条件是重点,如果没有这个条件会超时 sum = 0; while(n % index == 0){ sum++; n /= index; } if(sum){ ans++; } } if(n != 1){ ans++; //说明存在一个大于sqrt(n)的质因数,且有且仅有一个,所以要+1 } printf("%lld",ans); return 0; }
0.0分
12 人评分
简单的a+b (C语言代码)浏览:583 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:909 |
妹子杀手的故事 (C语言代码)浏览:1297 |
C语言训练-列出最简真分数序列* (C语言代码)浏览:658 |
三角形 (C++代码)递归(存在大量重复计算,容易出现时间超限)浏览:836 |
校门外的树 (C语言代码)浏览:733 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:638 |
1642题解浏览:784 |
关于C语言变量位置的问题浏览:294 |
Minesweeper (C语言描述,蓝桥杯)浏览:1176 |