R-素因子分解
你能帮我做这个练习吗?我对数学算法知之甚少,对R语言更是知之甚少。多谢各位 程序从用户处读取整数。如果用户输入的值小于2,则程序应显示错误。否则,程序应该显示素数,这些素数可以相乘计算n,每行显示一个因子。例如:R-素因子分解,r,R,你能帮我做这个练习吗?我对数学算法知之甚少,对R语言更是知之甚少。多谢各位 程序从用户处读取整数。如果用户输入的值小于2,则程序应显示错误。否则,程序应该显示素数,这些素数可以相乘计算n,每行显示一个因子。例如: The prime factors of 72 are: 2, 2, 2, 3, 3 我有一个C代码,它计算素数 #include <stdio.h> int main() { int i, j, num, isPrime; /* Input a number fro
The prime factors of 72 are: 2, 2, 2, 3, 3
我有一个C代码,它计算素数
#include <stdio.h>
int main()
{
int i, j, num, isPrime;
/* Input a number from user */
printf("Enter any number to print Prime factors: ");
scanf("%d", &num);
printf("All Prime Factors of %d are: \n", num);
/* Find all Prime factors */
for(i=2; i<=num; i++)
{
/* Check 'i' for factor of num */
if(num%i==0)
{
/* Check 'i' for Prime */
isPrime = 1;
for(j=2; j<=i/2; j++)
{
if(i%j==0)
{
isPrime = 0;
break;
}
}
/* If 'i' is Prime number and factor of num */
if(isPrime==1)
{
printf("%d, ", i);
}
}
}
return 0;
}
与此相反:
2, 2, 2, 3, 3
我也不知道如何使用递归将其转换为R.
prime_factors <- function(x, i=2, factors = NULL){
if(x<i) factors
else if(! x %% i) prime_factors(x/i, i, c(factors, i))
else prime_factors(x, i+1, factors)
}
prime_factors(72)
[1] 2 2 2 3 3
prime\u factors这是我以前写的,不过可能需要一些改进。根据您的要求进行更新
get_prime_factors <- function() {
num <- as.numeric(readline(prompt="Enter number: " ))
n <- num
if (n > 2) {
numvec <- numeric()
while(n %% 2 == 0){
numvec = c(numvec, 2)
n = n/2
}
i = 3
while(n != 1) {
while(n %% i == 0) {
numvec = c(numvec, i)
n = n/i
}
i = i + 2
}
sprintf("All Prime Factors of %d are:%s", num, paste0(sort(numvec), collapse = ","))
}
else {
stop("Try a bigger number")
}
}
get_prime_factors()中出错:请尝试更大的数字
使用包
首先,在您的计算机上安装该软件包
install.packages("numbers")
现在,在您的R会话中加载包并获取主要因素
library(numbers)
primeFactors(600851475143)
到目前为止,你们有什么?请参阅更新的问题,了解我到目前为止的情况。对不起,但我发现,如果你们搜索类似“[r]素因子”的东西,你们不太可能找到几个关于r的问题,寻找计算素因子的方法,以及这些问题的正确答案。你试过这个吗?例如,我得到的第一个结果:数字
被限制为双倍的最大大小,我相信。对于真正大的整数,请考虑<代码> GMP::因子化< /代码>
get_prime_factors()
Enter number: 100
#[1] "All Prime Factors of 100 are : 2,2,5,5"
get_prime_factors()
Enter number: 72
#[1] "All Prime Factors of 72 are : 2,2,2,3,3"
get_prime_factors()
Enter number: -9
install.packages("numbers")
library(numbers)
primeFactors(600851475143)