如何修改R语言的print_factors函数使其仅返回质因数?
解决方案
要实现只返回输入数字因数中的质数,你可以分两步操作:先编写一个判断质数的辅助函数,再修改原函数筛选出符合条件的因数。
1. 编写质数判断函数
先实现is_prime函数,用来检查单个数字是否为质数:
is_prime <- function(n) { if (n <= 1) return(FALSE) # 1及以下的数不是质数 if (n == 2) return(TRUE) # 2是唯一的偶质数 if (n %% 2 == 0) return(FALSE) # 大于2的偶数都不是质数 # 检查从3到sqrt(n)的奇数是否能整除n for (i in seq(3, sqrt(n), by = 2)) { if (n %% i == 0) return(FALSE) } return(TRUE) }
2. 修改原函数筛选质数因数
基于原有的因数查找逻辑,先收集所有因数,再用is_prime筛选出其中的质数:
get_prime_factors <- function(k) { # 收集所有因数 factors <- c() for(i in 1:k) { if((k %% i) == 0) { factors <- c(factors, i) } } # 筛选因数中的质数 prime_factors <- factors[sapply(factors, is_prime)] # 返回结果(若需要直接打印可添加print(prime_factors)) return(prime_factors) }
测试示例
输入12,它的因数是1、2、3、4、6、12,其中质数为2和3:
get_prime_factors(12) # 输出: [1] 2 3
输入17(质数),它的因数是1和17,其中质数为17:
get_prime_factors(17) # 输出: [1] 17
内容的提问来源于stack exchange,提问作者HAPPY DUMMY
相关产品推荐
相关产品推荐

