返回首页 返回题库

小杨的幸运数字

C++ 中等 GESP五级真题 #数论#质因数分解

题目描述

题面描述

小杨认为他的幸运数字应该恰好有两种不同的质因子,例如,的质因子有,恰好为两种不同的质因子,因此12是幸运数字,而的质因子有,不符合要求,不为幸运数字。

小杨现在有个正整数,他想知道每个正整数是否是他的幸运数字。

输入格式

第一行包含一个正整数,代表正整数个数。

之后行,每行一个正整数。

输出格式

输出行,对于每个正整数,如果是幸运数字,输出1,否则输出0。

样例1

输入:

3
7
12
30

输出:

0
1
0

样例解释

7的质因子有7,只有一种。

12的质因子有2,3,恰好有两种。

30的质因子有2,3,5,有三种。

样例2

输入:

4
4
6
18
100

输出:

0
1
1
1

数据范围

对于全部数据,保证有,每个正整数满足。

  • 子任务1(40%):,正整数值域
  • 子任务2(60%):,正整数值域

时间限制

1.0 s

内存限制

  • 512.0 MB
💡 查看提示(先自己想一想再看)
核心考察质因数分解算法,需要统计每个数的不同质因子的数量。优化思路:可以预先使用欧拉筛预处理出每个数的最小质因子,后续分解质因数时效率更高;也可以直接对每个数进行试除分解,注意终止条件为i*i <= x,避免不必要的计算。易错点:分解完所有小于等于sqrt(x)的因子后,若剩余的x大于1,需要额外计入一个质因子;不要将质因子的幂次计入数量,只统计不同的质因子。
⚙ 开始做这道题 0 人做过 · 1 收藏 · 4 浏览

讨论(0)