全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
3928 7
2018-01-22
prime <- function(x){
  for(i in 2:n-1){
    if(x%i == 0){
             print("x is not a prime")
    }esle{
      print("x is a prime")
      }
  }
}

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2018-1-22 16:43:53
补充一下, 是else,我自己从那边打过来的时候打错了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-1-22 17:07:10
2:(n-1)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-1-22 17:19:14
错误一大把,除了楼上指出来的,我至少还看到三个:n是哪来的,x%i是什么,为什么print()在for循环以内
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-1-22 18:03:30
cheetahfly 发表于 2018-1-22 17:19
错误一大把,除了楼上指出来的,我至少还看到三个:n是哪来的,x%i是什么,为什么print()在for循环以内
大佬!被你这么一说,我重新认真检查了一下自己的代码,请过目!
prime1 <- function(x){
  j <- FALSE
  for(i in 2:(x-1))
    if(any(x%%i ==0)==F)
      j <- TRUE
  ifelse(j,"X is not a prime","X is a prime")
}
小弟调试过一下, 这样写虽然没错,但总感觉这段代码不够简洁,请斧正!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-1-22 22:55:25
时升翠微上3 发表于 2018-1-22 18:03
大佬!被你这么一说,我重新认真检查了一下自己的代码,请过目!
prime1
如果不考虑诸多容错,比如非正整数,3的判定等。还需要注意:
第一,j <- FALSE不必要,R不需要事先申明变量;
第二,j这个变量也不是必要存在的;
第三,x%%i是个标量,不需要用any;

我提供思路给你参考:
复制代码
虽然R语言要尽量避免用for循环,但也不是绝对的,上面的例子中,只要出现第一个能整除的,整个函数就结束了,在很多场合反而更加有效率,当然,对于真正大的素数就会很慢。
复制代码
这里就是一个R语言风格的编程了,用向量化来计算,因此不需要for循环。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群