问题标题: 酷町堂:求助!写了几十遍写不出来(无题号勿喷)

0
0
已解决
郑怡翔
郑怡翔
初级天翼
初级天翼
#include<iostream>
using namespace std;
int main()
{
    int i=1;
    int n,a;
    cin>>n;
    while(n!=1)
    {
        i++;
        if(n%i==0)
        {
            cout<<i;
            n/=i;
            cout<<" ";
        }
    }
    return 0;
}

题目如下:

题目描述 Description

给定一个正整数n(2<=n<10000),找出它的所有质因数(重复的只取一个)。

输入描述 Input Description

一行,一个正整数n

输出描述 Output Description

一行,输出n的所有质因数,用空格隔开

样例输入 Sample Input

60

样例输出 Sample Output

2 3 5


1
已采纳
栾峻岩
栾峻岩
初级天翼
初级天翼

前面已经有人说出来了一个大错误:质因数是因数且是质数,不光只是因数。

 

还有你因数找的时候也有问题,它说重复的只说一次。

给你一个找因数的好方法:

for (int i = 2; i <= sqrt(n); i++) {
    if (n % i == 0) {
        if (i == n / i)
            判断i(n/i)是否为质数,是则输出。(①)
        else
            将i和n/i带入①中计算,同理。
    }
}

 

找质数就是判断这个数除了1和本身没有其他的因数,用一个标记,判断2到sqrt(n)中有没有n的因数。

祝你AC愉快!

0
0
贾志骜
贾志骜
新手光能
新手光能

你这有问题!!!,你试下80,会出现4的,你这单纯在找因数,但质数呢

贾志骜在2019-08-02 18:54:55追加了内容

只不过有些样例对了,如15,20,60

0
0
0
朱敏行
朱敏行
中级守护
中级守护

你这道题的题号应该是3835

不说了,放代码

    for(int i=2;i<=m;i++)
    {
        a=0;
        while(m%i==0)
        {
            m=m/i;
            a++;
        }
        if(a>0)
            t++;
    }
    cout<<t;

 

大家别喷 别举报 
}

0
0
李泽远
李泽远
高级天翼
高级天翼

long n,i,j;

cin>>n;

再加上评论区代码。

有钱大佬望采纳!

0
毛润宇
毛润宇
新手天翼
新手天翼

你这个代码只是在找因数,但是他让你找质因数,所以在某些数字上会出现问题,判断完是不是因数后还得在判断是不是质数。

0
0
李翊冉
李翊冉
高级守护
高级守护

要输出所有质因数,所以在输出之前要先判断是否为质数

我要回答