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
0
0
毛润宇
新手天翼
新手天翼
这题最好用埃氏筛,如果你不知道埃氏筛1是什么,请点:https://www.sogou.com/sie?hdq=AQxRG-0000&query=c%2B%2B%20%E5%9F%83%E6%B0%8F%E7%AD%9B&ie=utf8。
这题有了这个基础,只要搞一个计数器就行了。
0