#Z1886. 单纯质因数之王恩全版

一,题目

Description

读五年级的楠楠刚学完了质数、合数、因数、质因数等概念。

他还知道了每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,叫做这个合数的质因数.把一个合数用质因数相乘的形式表示出来,叫做分解质因数.

聪明爱动脑筋的楠楠突然对具有互不相同的质因数的合数产生了兴趣。例如:

30=2 *3 * 5

它有互不相同的质因数

70 = 2 * 5 * 7,它也有互不相同的质因数。

若一个合数中所有的质因数互不相同,则把它称之为具有单纯质因数的合数。

他想知道还有哪些数是单纯质因数的合数。

你现在要帮楠楠解决的问题是:已知N,依次输出N以内所有具有单纯质因数的合数。

Input

输入数据只一个整数N(10<=N<=1000000)。

Output

依次输出N以内所有具有单纯质因数的合数。

Samples

输入数据 1

12

输出数据 1

6 10


二,解法

    • 解法1(90分)

直接找题意模拟,枚举1~n,如果枚举2的数是质数则跳过,用一个变量fl记录该数是否为单纯质因数(一开始为1),再对枚举的数进行分解质因数,如果该数的某一个质因子分解时分解次数>1,就fl = 0,break;最后判断如果fl == 1,输出i即可。

2,解法2(100分)

用类似埃氏筛的思路。

step1:先用欧拉筛筛出1~n的质数,如果isp[i]==1说明i是质数,也就是不可能成为单纯质因数。并且注意上述过程结束后还要把isp[1]=1

step2 :枚举1~pris中的数,并用j储存i * i,然后因为此时j已经是个完全平方数了,他不可能再成为单纯质因数了,所以将1~n中所有j的倍数的isp设为1

step3:将1~n中所有isp[i]==0i输出即可

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值