- 分解质因子
- 2022-01-27 10:37:09 @
#include<stdio.h>
using namespace std;
int main()
{
int i,n;
scanf("%d",&n);
for(i=2;i<=n;i++)
{
while(n!=i) //若i=n,则质因数就是n本身
{
if(n%i==0) //若i是质因数,则打印出i的值,并用商给n赋新值
{
printf("%d\n",i);
n=n/i;
}
else break;//若不能被i整除,则算下一个i
}
}
printf("%d\n",n); //这里是打印最后一个质因数,也就是等于i时的那个
return 0;
}
超时
2 条评论
-
12116黄立博 (12116黄立博) LV 9 @ 2022-06-19 14:22:24
undefined和jtwd2这两个测评机测评的不一样
-
2022-01-28 21:22:00@
假设一个数n有两个质因子,一个为2,另一个就为a(n/2),这时a*a>=n;
所以可得以下核心代码
while(a!=1&&i*i<=a)//假设那个数为a,因为最后一个质因子的平方可能>=a,也有可能a本身为质数 { while(a%i==0)//当i为质因子时(不可能是合数) { cout<<i<<' '; a/=i; } if(i%2==0)i++; else i+=2;//稍微提升一下速度,可以直接为i++ } if (a!=1)cout<<a;//若a不为1,则现在的a为最后那个质因子
- 1
信息
- ID
- 1770
- 难度
- 6
- 分类
- (无)
- 标签
- 递交数
- 59
- 已通过
- 16
- 通过率
- 27%
- 被复制
- 6
- 上传者