九度OJ 1207:质因数的个数 (质数)
2015-10-27 12:23
567 查看
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:5939
解决:1926
题目描述:
求正整数N(N>1)的质因数的个数。
相同的质因数需要重复计算。如120=2*2*2*3*5,共有5个质因数。
输入:
可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9)。
输出:
对于每组数据,输出N的质因数的个数。
样例输入:
样例输出:
提示:
注意:1不是N的质因数;若N为质数,N是N的质因数。
来源:2007年清华大学计算机研究生机试真题
思路:
常规思路是先求出不大于sqrt(n)的质数,然后判断是否是n的因子。
我的代码在无意中运用了素数筛法,更加简洁,推荐!
代码:
内存限制:32 兆
特殊判题:否
提交:5939
解决:1926
题目描述:
求正整数N(N>1)的质因数的个数。
相同的质因数需要重复计算。如120=2*2*2*3*5,共有5个质因数。
输入:
可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9)。
输出:
对于每组数据,输出N的质因数的个数。
样例输入:
120
样例输出:
5
提示:
注意:1不是N的质因数;若N为质数,N是N的质因数。
来源:2007年清华大学计算机研究生机试真题
思路:
常规思路是先求出不大于sqrt(n)的质数,然后判断是否是n的因子。
我的代码在无意中运用了素数筛法,更加简洁,推荐!
代码:
#include <stdio.h> #include <string.h> #include <math.h> int main(void) { int n, i, j; int tmp, count; while (scanf("%d", &n) != EOF) { count = 0; i = 2; while (n>1) { for (; i<=sqrt(n); i++) { if (i>2 && i%2 == 0) continue; if (n % i == 0) { count ++; n /= i; break; } } if (i > sqrt(n)) { count ++; break; } } printf("%d\n", count); } return 0; } /************************************************************** Problem: 1207 User: liangrx06 Language: C Result: Accepted Time:10 ms Memory:928 kb ****************************************************************/
相关文章推荐
- XCode 7.1 发送HTTP请求报错解决办法
- 我在 Google 做技术经理的一天
- 九度OJ 1206:字符串连接 (字符串操作)
- java之ssh
- 九度OJ 1206:字符串连接 (字符串操作)
- Android编程之微信SDK分享功能过程步骤详细分析
- PHP设计模式系列 - 单例
- Windows下利用CMake和VS2013编译OpenCV
- ajaxfileupload.js、struts2、ajax、json异步上传图片
- Mybatis3 框架理解
- CodeForces 591B Rebranding
- hdu 1576 A/B (扩展欧几里德简单运用)
- asp_net_webapi_httpclient.html
- 九度OJ 1205:N阶楼梯上楼问题 (斐波那契数列)
- Couchbase学习笔记(1)——概述
- Overriding the Virtual Mechanism
- 九度OJ 1205:N阶楼梯上楼问题 (斐波那契数列)
- 韩顺平循序渐进学java从入门到精通视频教程在线观看(总汇),1-94集全,以及视频和ppt,课后笔记
- 为什么数据线easy糟糕
- Apache Kafka源码分析 - autoLeaderRebalanceEnable