数列求和函数实现 def qh(n): 输入一个自然数n,如 补全代码 果n为奇数,输出表达式1+1/3+...+1/n的值;如果n为偶数,输出表达式1/2+1/4+..+1/n的值。输出表达式结果保留2 位小数。请完善代码。
时间: 2024-05-23 17:16:01 浏览: 21
def qh(n):
if n % 2 == 0:
summ = 0
for i in range(2, n+1, 2):
summ += 1/i
return round(summ, 2)
else:
summ = 0
for i in range(1, n+1, 2):
summ += 1/i
return round(summ, 2)
相关问题
74HC164N引脚定义
74HC164N的引脚定义如下:
1. SER (Serial Data Input): 串行数据输入
2. QA-QH (Parallel Data Outputs): 并行数据输出,共8个引脚
3. GND (Ground): 地线
4. QA-QH (Parallel Data Outputs): 并行数据输出,共8个引脚
5. SH/CP (Shift/Clock Input): 移位/时钟输入
6. MR (Master Reset Input): 主复位输入
7. QH' (Serial Data Output): 串行数据输出
8. VCC (Positive Power Supply): 正电源供应
请注意,这只是一种常见的引脚布局,实际上不同的芯片可能会有略微不同的引脚定义。因此,在使用具体的芯片时,请参考其相关的数据手册以获取准确的引脚定义。
帮我写一个Go和PHP通讯的RSA2的代码
以下是一个简单的Go和PHP通讯的RSA2加密和解密的示例代码:
Go代码:
```go
package main
import (
"crypto/rand"
"crypto/rsa"
"crypto/x509"
"encoding/base64"
"encoding/pem"
"fmt"
)
func main() {
// 生成RSA公私钥
privateKey, err := rsa.GenerateKey(rand.Reader, 2048)
if err != nil {
fmt.Println("生成RSA公私钥失败:", err)
return
}
publicKey := &privateKey.PublicKey
// 将公钥导出为PEM格式
publicKeyBytes, err := x509.MarshalPKIXPublicKey(publicKey)
if err != nil {
fmt.Println("导出公钥失败:", err)
return
}
publicKeyPem := pem.EncodeToMemory(&pem.Block{
Type: "RSA PUBLIC KEY",
Bytes: publicKeyBytes,
})
// 将私钥导出为PEM格式
privateKeyBytes := x509.MarshalPKCS1PrivateKey(privateKey)
privateKeyPem := pem.EncodeToMemory(&pem.Block{
Type: "RSA PRIVATE KEY",
Bytes: privateKeyBytes,
})
fmt.Println("公钥:\n", string(publicKeyPem))
fmt.Println("私钥:\n", string(privateKeyPem))
// 加密数据
data := []byte("Hello World!")
cipherText, err := rsa.EncryptPKCS1v15(rand.Reader, publicKey, data)
if err != nil {
fmt.Println("加密数据失败:", err)
return
}
fmt.Println("加密后的数据:", base64.StdEncoding.EncodeToString(cipherText))
// 解密数据
plainText, err := rsa.DecryptPKCS1v15(rand.Reader, privateKey, cipherText)
if err != nil {
fmt.Println("解密数据失败:", err)
return
}
fmt.Println("解密后的数据:", string(plainText))
}
```
PHP代码:
```php
<?php
// 公钥
$publicKey = '-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEAy3bVz5H5JW8Qw5nh5QY7Q0Zd1jS8nCJhjEzLlJL4e4iGb4w4kk4F
ZPpT0T0rXephN/vrM6jy2JFz1LxOUx6AUWO/3a3qHf3OQOQ2vIg1LdJ1RikfjGk
OwvLbZK6I0T6Tc9rWZrAPJQ2lQsU6fzU6eJU6+Cq3eYgMjKQ9Xwm1zDvGH1jGKz
R8yBkLb6cg1ncZJiRCR5X9oWjKvHqVzqOaL5Q5O5HtKj2QROZBf6Z8MjKvNUCLOL
E4GhC/4j4W4m4zA2YlJd0n9nKjzKJvVh/XfzFpCjK4+4G4wVZJYDZ5R9XW9Kj+u3
g3tP5u5QWJtM5w3qZ3bOZoJ2Hf1NkD1JfwIDAQAB
-----END RSA PUBLIC KEY-----';
// 私钥
$privateKey = '-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAy3bVz5H5JW8Qw5nh5QY7Q0Zd1jS8nCJhjEzLlJL4e4iGb4w4
kk4FZPpT0T0rXephN/vrM6jy2JFz1LxOUx6AUWO/3a3qHf3OQOQ2vIg1LdJ1Rik
fjGkOwvLbZK6I0T6Tc9rWZrAPJQ2lQsU6fzU6eJU6+Cq3eYgMjKQ9Xwm1zDvGH1j
GKzR8yBkLb6cg1ncZJiRCR5X9oWjKvHqVzqOaL5Q5O5HtKj2QROZBf6Z8MjKvNUC
LOLE4GhC/4j4W4m4zA2YlJd0n9nKjzKJvVh/XfzFpCjK4+4G4wVZJYDZ5R9XW9Kj
+u3g3tP5u5QWJtM5w3qZ3bOZoJ2Hf1NkD1JfwIDAQABAoIBAG6BdUJGZT6EFrU1
XrC1zDQ2yJ6wzU6e8x6H+jDq3KZv1n76Q2X9aJfRjK7zgIwfsGkx8ZPdJFqY3L1A
Q2X+MQMhLaK1Mf0GpN+P8xGZpHcJlLrLrOuk1fXH1hqaaB2J7ma6UoJ6x8Y1ZdYQ
/MgSImK9h9c+4YMpM4z7K/KM4f4h4RdRZ5kVnzmDlGjK9X5u5z3qV7h1tvlWgV8b
TVlRgX9BhJpkpLZd3q3qjWgOQJz2Hm7lI/2Q0D8XsN0k6YsU6oN+Mj0HP0rM1A+n
zvLgVyfW8e4n4CZ4Dl2gJOQyW8xS+52nZb7Vv3q3gW7k2Z2Q+YHt0wFJTWz8JKMj
touy7+ECgYEA5m9X5c5mY+1Cwv1gOxV8oHtLlFYF7o4PzWp9X4ro4+M4VZ/lw2LW
x8SdSNNbLJyf+ax2I6XsZ6U+Y6UdL6+PGT6nIyLr1yGJrMg1RcyR9XoZfJpZdCUP
q3+6x8JzQ2eB1LQ2N6M1D6U+ZbUgY6K/6wT8G6f1+LrCgIc1xeJmK9MCgYEA3d7p
JqFwV8Djg2Lrc+1e6Hq3v9B5o5Q5uV7YKz1wvA8RkzgE57F7p06aPv+9FpIf4K4n
E4J+QwvV8WnSfKcJz5lP4SaL8eNp4/4GYEhZf2QwN8xck0S0iS7Nz61qCvq7V3W2
O5lVgY1tzo0CKmRbGt57EjKpER1cJvXjR9ZzGmECgYEAq3e3IIxjDQ2bJg+Je0Q2
jX9nDnMI6eE71BdHc6GxTdwT1zrI7f6rXeZD4GvL4VZf4J4h8x+1Hc2QFjyP4SdM
9W5q3uq7V1Yi5u5RtH5+uxA1eVz5GtKzR9aJS0OF/1pupgkL+G/8xNfKj0q0gI1N
+2jK6FnQO6QDZ6OgU6e8TCECgYBEw+O6bIzr1KXb6U2J6Uuw+6C+Z6T8GzzTJz6L
b6fKzrJXWZn0KjVpJG+IgZx8WJjKq3nL1aQgQ+9XWIk3Hq0V7N1Kj5gR8WJL+1wF
L0zL/6GpD0o4OvOZKmJ4h4x8L+OJ2wVzO6SfKdW9bi7qgq3Y41t7Q2tH5JG8wvLH
nF7f+oECgYEAhJvGRo+Y4Z4b4Mk1x8Qh2JG6e+TFdS4Z1+Xm2UOY6UoZ6JlIaTBL
OcJyGkOyJomrBZ9X+1Ciu0ZpNlPfJbPq8Fq/3e1sfJLHONRWlW8RvGnCnJZfPCHk
6b8xq3zj1HJlQdQ2sFj9Q2gU6YsU6e8T6jxT6UoU6e8T6jxT6UoU6e8T6jxT6UoU
6e8T6jxT6Uo=
-----END RSA PRIVATE KEY-----';
// 加密数据
$data = 'Hello World!';
openssl_public_encrypt($data, $encrypted, $publicKey, OPENSSL_PKCS1_PADDING);
echo '加密后的数据: ' . base64_encode($encrypted) . PHP_EOL;
// 解密数据
openssl_private_decrypt($encrypted, $decrypted, $privateKey, OPENSSL_PKCS1_PADDING);
echo '解密后的数据: ' . $decrypted . PHP_EOL;
```
注意:以上示例代码仅供参考,实际使用时需要根据具体情况进行调整和完善。