R-素因子分解

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

你能帮我做这个练习吗?我对数学算法知之甚少,对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 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)