1362:[2017 江苏科技大学 程序设计竞赛] B. Mr.Z 的四因子数 (改编)
难度: 倔强青铜 时间限制: 1000MS 空间限制: 64MB 提交数: 166 通过数: 28题目内容
[2017 江苏科技大学 程序设计竞赛]
B. Mr.Z 的四因子数 (改编)
题目描述
Mr.Z 是一多高超的数学大师,最喜欢研究的领域是数论,由于要经常做各类特殊的整数分布研充,所以他想麻烦你帮他解决一个问题。
考虑这样的一个数 K,它只含有四个因子,比如 10,它只有:1、2、5、10 这四个因子。我们将满足上述性质的数称为四因子数。
现在想请问你在区间 [ a, b ] 内有多少个四因子数。
输入描述
有多组测试数据,每组测试数据占一行。
每一行中,有两个用空格分隔的正整数 a 和 b。
a 和 b 均不超过 70000。
输出描述
对每组测试数据,输出一行答案。
输入样例
1 66666
输出样例
15878
#include <stdio.h> #include <math.h> using namespace std; bool f(int n) { int i, counter = 0; for (i = 2; i * i < n; i++) { //验证sqrt(n)之前的数 if (n % i == 0) { counter++; } if (counter == 2) //超过四因子数的 提前跳出循环 break; } if (counter == 1 && i * i != n) //例如16就要排除 return true; else return false; } int main() { int a, b; while (scanf("%d %d", &a, &b) != EOF) { int cnt = 0;//计数 for (int i = a; i <= b; i++) { if(f(i)) { cnt++; } } printf("%d\n", cnt); } return 0; }
不然老超时 我就伤心欲绝过 !!!