0
已解决
周建勋
中级光能
中级光能
3824 求自然数的因数2
题目描述 Description
任给一个自然数n(1<=n<=1000),求该自然数除1和本身外所有的因数,如果没有则输出0。
输入描述 Input Description
一个正整数n
输出描述 Output Description
一行,输出n除1和本身外所有的因数,用空格隔开;没有则输出0
样例输入 Sample Input
样例一:30
样例二:23
样例输出 Sample Output
样例一:2 3 5 6 10 15
样例二:0
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n,i;
cin>>n;
if(n==1)
{
cout<<0;
return 0;
}
for(i=2;i<n;i++)
{
if(n%i==0)
{
cout<<i<<" ";
}
}
return 0;
}
哪里错了,请各位大佬找错。
70分
周建勋在2019-07-05 21:28:29追加了内容
题目错了
0
已采纳
赵逸凡
初级启示者
初级启示者
你不是学到了素数了吗...
万一这个数不是1,也不是合数,怎么办?你忽略了素数(质数)的存在!
蒟蒻:这道题数据范围是1000,嗯,打表,在网上抄个质数表,然后判断是不是这个表里面的,轻松解决!(暴力枚举)
萌新:此题只要在你的程序上加个判断质数的函数就AC了,代码
bool f=0;
for(int i=2;i<n;i++)if(!n%i)f=1;
if(!f)n是质数
(函数标记)
大佬:普通筛法了解一下(质数筛法)
神犇:可以优化的,可以i从2开始,到sqrt(n)结束,或者....(优化算法)
0