go算法入门(计算n以内的质数的交替计算绝对值的和与差)

题目:

special_sum(10)  => 1,2,3,5,7 的和 

special_sum(20)  => 1,2,3,5,7,11,13,17,19 的和 

such as  

special_sum(10)  => 1,2,3,5,7 的和 

首先,数字是1,2,3,5,7  然后我们做变换,1,-2,3,-5,7 (正,负,正,负,正 ...)

然后加和,1-2+3-5+7=4

代码1如下(带日志):

package main
import "fmt"
func prime_number(prime int)[]int{
  array := []int{}
  if prime==1{
    array = append(array, 1)
  }else if prime==2{
    array = append(array, 1,2)
  }else if prime>=2{
    array = append(array,1,2)
  }
  for i := 2; i < prime; i++{
    for k := 2; k < i; k++{
      if i%k==0{
        break;
      }else{
        if k+1==i{
          array = append(array, i)
        }
      }
    }
  }
  return array
}
//第一步先用for循环遍历数组
//第二步再用if(求余)判断数组里面的某个元素是奇则为负,是偶则为正
//第三在奇里面相减,在偶里面相加
func add_subtract(array []int)int{
  length := len(array)
  fmt.Println(array)
  sum := 0
  for j := 1; j <= length; j++{
    fmt.Println("j:", j)
      if j%2==0{
        fmt.Println("j:", j)
        fmt.Println("相减之前", array, "sum:", sum)
        sum -= array[j-1]
        fmt.Println(" 相减array:", array, "sum:", sum, "===相减lenth-j:", array[j])
      }else{
        fmt.Println("jjjjjjj:", j)
        fmt.Println("相加之前:", array, "sum:", sum)
        sum += array[j-1]
        fmt.Println("相加array:", array, "sum:", sum, "相加lenth-j:", array[j-1])
      }
   } 
   fmt.Println(sum)
  return sum
}
func main() {
	ZhiShu := prime_number(10)
  sum := add_subtract(ZhiShu)
  fmt.Println("=======sum:", sum)
	fmt.Println("====:", ZhiShu)
}

结果:

[1 2 3 5 7]
j: 1
jjjjjjj: 1
相加之前: [1 2 3 5 7] sum: 0
相加array: [1 2 3 5 7] sum: 1 相加lenth-j: 1
j: 2
j: 2
相减之前 [1 2 3 5 7] sum: 1
 相减array: [1 2 3 5 7] sum: -1 ===相减lenth-j: 3
j: 3
jjjjjjj: 3
相加之前: [1 2 3 5 7] sum: -1
相加array: [1 2 3 5 7] sum: 2 相加lenth-j: 3
j: 4
j: 4
相减之前 [1 2 3 5 7] sum: 2
 相减array: [1 2 3 5 7] sum: -3 ===相减lenth-j: 7
j: 5
jjjjjjj: 5
相加之前: [1 2 3 5 7] sum: -3
相加array: [1 2 3 5 7] sum: 4 相加lenth-j: 7
4
=======sum: 4
====: [1 2 3 5 7]

代码2如下:

package main
import "fmt"
func prime_number(prime int)[]int{
  array := []int{}
  if prime==1{
    array = append(array, 1)
  }else if prime==2{
    array = append(array, 1,2)
  }else if prime>=2{
    array = append(array, 1,2)
  }
  for i := 2; i < prime ; i++{
    for j := 2; j < i; j++{
      if i%j==0{
        break;
      }else{
         if j+1==i{
            array = append(array, i)
         }
      }
    }
  } 
  return array
}
//用for循环遍历array数组,使k等于这个数组的元素
//第一步先用for循环遍历数组
//第二步再用if(求余)判断数组里面的某个元素是奇则为负,是偶则为正
//第三在奇里面相减,在偶里面相加
func add_subtract(array []int)int{
  length := len(array)
  sum := 0
  for k := 1; k <= length; k++{
    if k%2==0{
      sum -= array[k-1]
      fmt.Println("k:", k)
      fmt.Println("sum:", sum)
    }else{
      sum += array[k-1]
      fmt.Println("k:", k)
      fmt.Println("sum:", sum)
    }
  }
  return sum
}
func main() {
  ZhiShu := prime_number(20)
  sum := add_subtract(ZhiShu)
  fmt.Println("sum:", sum)
  fmt.Println(ZhiShu)
}

结果:

k: 1
sum: 1
k: 2
sum: -1
k: 3
sum: 2
k: 4
sum: -3
k: 5
sum: 4
k: 6
sum: -7
k: 7
sum: 6
k: 8
sum: -11
k: 9
sum: 8
sum: 8
[1 2 3 5 7 11 13 17 19]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值