现在这是一个非常基本的问题,我还是想问一下。我想知道如何快速找到数字(< = 10 ^ 12)的素数因子分解。 请帮我。 请不要只是发布代码请解释我只是一个新手(不知道)
答案 0 :(得分:0)
示例2:147的主要因子分解是什么?
我们可以将147平均分为2吗?
147÷2 =73½
不,不能。答案应该是一个整数,而73½则不是。
让我们尝试下一个素数,3:
147÷3 = 49
这很有效,现在我们尝试分解49,并发现7是最小的素数:
49÷7 = 7
这就是我们需要去的,因为所有因素都是素数。
147 = 3×7×7
(或147 = 3×72使用指数)
码
#include<stdio.h>
int main(){
int num,i=1,j,k;
printf("\nEnter a number:");
scanf("%d",&num);
while(i<=num){
k=0;
if(num%i==0){
j=1;
while(j<=i){
if(i%j==0)
k++;
j++;
}
if(k==2)
printf("\n%d is a prime factor",i);
}
i++;
}
return 0;
}
答案 1 :(得分:0)
对于数字来说,通过试验划分的简单因子分解就足够了:
function factors(n)
f, fs := 2, []
while f * f <= n
while n % f == 0
n := n / f
append f to fs
f := f + 1
if n == 1 return fs
append n to fs
return fs
您需要更强大的算法,因为要考虑的数字越来越大。
答案 2 :(得分:0)
非常简单的程序,
a=int (input("enter number"))
i=2
h=1
c=a
while(h!=a):
if(c%i==0):
print(i)
h=h*i
c=c/i
else:
i=i+1