- 描述
- 功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
-
-
- 数据范围: 1 \le n \le 2 \times 10^{9} + 14 \1≤n≤2×10
- 9
- +14
- 输入描述:
- 输入一个整数
-
- 输出描述:
- 按照从小到大的顺序输出它的所有质数的因子,以空格隔开。
-
- 示例1
- 输入:
- 180
- 复制
- 输出:
- 2 2 3 3 5
- #include
- int main()
- {
- long int n;
- scanf("%ld",&n);
- for(int i=2;i*i<=n;i++)
- while(n%i==0)
- {
- printf("%d ",i);
- n = n/i;
- }
- if(n!=1)
- printf("%ld ", n);
- return 0;
- }
知识点:
①此题主要需要注意时间复杂度,判断因子的时候只需要判断到i*i ②解法中没有对因数判断是否为质数的环节,因为除数是从小到大进行遍历,这样输入值非质数的因子会先被拆分为质数因子,而不会输出该非质数因子。 ③不要忽略被除数本身有可能就是一个质数,如果除数遍历了以后,没有一个是它的因子,则该数即为质数。 知识点: ①在python中双星号(**)是指数运算符,用于进行乘方运算或幂运算。双星号用于两个数之间,表示将第一个数作为底数,第二个数作为指数进行乘方运算或幂运算。 ②python在进行除法运算的时候会自动将数转换为双精度浮点型来计算,以防止结果精度的丢失,即使可以整除,也会先进行转换再运算,结果返回一个float,如果需要结果返回一个整型,可以使用‘//’,返回一个int,但需要除数与被除数均为int型,否则结果也会是float。示例如下:三、python解法