质数的交替计算绝对值的和与差)"/>
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 := 0for 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 := 0for 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]
更多推荐
go算法入门(计算n以内的质数的交替计算绝对值的和与差)
发布评论