题目: 任何一个大于1的正整数都能被分解为若干个质数相乘, * 比如28=2×2×7被分解为了三个质数相乘。请问在区间[2333333,23333333]中有多少个正整数可以被分解为12个质数相乘? * * * 思路:采用算数基本定理 任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积 * 比如 1200 = 2^4 * 3^1 * 5^2 */ public class 数数 { public static void main(String[] args) { // 统计能被分解成12个质数相乘的数有多少个 int ans = 0; for (int i = 2333333; i <= 23333333; i++) { // 不能直接操作i i是循环条件 int t = i; // 用来统计t可以分解为几个质数相乘 int x = 0; // 可以不用遍历到i 任何一个数 它的质因子大于根号n的要么没有 要么只有一个 for (int j = 2; j <= t / j; j++) { // 除掉根号n之间的质因数 while (t % j == 0) { x++; t /= j; } } // 如果除完之后 n>1 就说明还有一个 任何一个数 它的质因子大于根号n的要么没有 要么只有一个 if (t > 1) x++; if (x == 12) ans++; } System.out.println(ans); // System.out.println(25606); } }
蓝桥杯 java 数数
最新推荐文章于 2024-07-20 23:55:03 发布