社区
C语言
帖子详情
求一个数的质因子的算法?
zhgc2003
2003-05-10 10:28:43
求一个数的质因子的算法(不是因子)
比如说
98=49*2=7*7*2
但是只能说49是98的因子
98质因子是7和2
质因子一定是质数
只要给出个算法
求出一个数的质因子就行
方法不限。请多多指教!
...全文
1659
9
打赏
收藏
求一个数的质因子的算法?
求一个数的质因子的算法(不是因子) 比如说 98=49*2=7*7*2 但是只能说49是98的因子 98质因子是7和2 质因子一定是质数 只要给出个算法 求出一个数的质因子就行 方法不限。请多多指教!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
taylorwc
2003-05-12
打赏
举报
回复
先找出这个数的因数,再用一个函数判断其是否为质数
lbaby
2003-05-12
打赏
举报
回复
1
呵呵
RSA的基石
图灵奖
superyellow
2003-05-12
打赏
举报
回复
先求出2~这个数的所有质数
然后循环一遍能被这个数整除的就是它的质因子了
------------------------------------------------------
没必要求出2~n的所有质数,到sqrt(n) + 1就可以了。质因子不可能大于sqrt(n) + 1的。
NowCan
2003-05-12
打赏
举报
回复
10^150算大吗?
jony413
2003-05-12
打赏
举报
回复
不会吧?拿n要多打啊?顶多也只是算n次!
不象那些货郎担问题之类的,算死人了,输入10城市就让你算到好累
我具体还没去等它!
Riemann
2003-05-11
打赏
举报
回复
质因子分解一直是一个很困难的问题,如果n不是很大,用楼上的方法也就行了,当n很大时,到目前为止,还没有找到一个高效的算法。
jony413
2003-05-10
打赏
举报
回复
# include <stdio.h>
main()
{
int i,n;int j,k;
system("cls");
printf("please input the number:");
scanf("%d",&n);
for(i=2;i<n;i++)
{
while(n%i==0)
{
n=n/i;
printf("%d*",i);
}
}
if(n!=1)
printf("%d",n);
else
printf("\b ");
}
fangyi1120
2003-05-10
打赏
举报
回复
同意
lws08
2003-05-10
打赏
举报
回复
先求出2~这个数的所有质数
然后循环一遍能被这个数整除的就是它的质因子了
【因子
算法
】——
求
一个
数
的因子、
质因子
、
求
两个
数
的公因子
下面理清楚一些
数
学概念: 因
数
:
一个
数
,如果存在可以被它整除的
数
,则这些
数
都是该
数
的因
数
。 规定0没有因
数
,1的因
数
是1,其他的比如4的因
数
有“1”、“2”、“4 因子:
一个
数
,如果存在可以被它整除的
数
且这些
数
不包括它本身,则这些书都是该
数
的因子。 规定0没有因子,1的因子是1,其他的比如4的因子有“1”、“2”
质因子
:
一个
数
,如果可以分解成n个质
数
相乘,则n个质
数
成为该
数
的
质因子
。
数
学
算法
:
求
一个
数
的
质因子
两种方法,第一种是将所有的素
数
筛选出来,第二种直接循环就行了(第二种更加的高效)。 第一种方法其实就是先将素
数
筛选出来然后再计算,第二种是直接计算。 第一种的代码 #include using namespace std; const int Max = 1e7+7; bool prim[Max]; vector ve;//素
数
筛选 void pre_prim() { fo
java中
求
一个
数
质因子
的方法
java中
求
一个
数
质因子
的方法
求
一个
数
的因子个
数
/因子和/
质因子
C/C++实现
求
一个
数
的因子个
数
时间复杂度O√n ll get_number(ll x){ ll num=0; for(ll i=1;i*i<=x;i++){ if(x%i==0) num+=2; if(i*i==x) num+=1; } return num; }
求
一个
数
的因子和时间复杂度O√n ll get_number(ll...
数
论:
求
一个
数
的因子专题(因子
数
,因子和,
质因子
)
问题1-
求
n的因子
数
、因子和 输入
一个
正整
数
N,
求
出这个
数
字存在多少个因子,以及因子之和。 分析 既要
求
因子
数
,又要
求
因子和,因此我们要从1开始遍历一直到根号n,如果n%i==0,因子
数
要+2,因为因子和+i和+n/i,另外由于精度问题,还需要对根号n的情况进行特判 代码 int cnt=0,long long sum=0; //cnt为因子
数
sum为因子和 因子和可能很大,开long long void fun(int n) { if(n==1) cnt=1,sum=1; else
C语言
69,373
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章