登录 主页

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

2023-03-29 04:07PM

题目:

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]

返回>>

登录

请登录后再发表评论。

评论列表:

目前还没有人发表评论