c语言素数
时间: 2023-07-03 18:21:34 浏览: 49
以下是判断一个数是否为素数的 C 语言代码:
```c
#include <stdio.h>
int main() {
int n, i, is_prime = 1;
printf("请输入一个正整数:");
scanf("%d", &n);
for (i = 2; i <= n / 2; i++) {
if (n % i == 0) {
is_prime = 0;
break;
}
}
if (is_prime == 1) {
printf("%d是素数。\n", n);
} else {
printf("%d不是素数。\n", n);
}
return 0;
}
```
该代码通过循环遍历从 `2` 到 `n/2` 的整数,判断这些整数是否能够整除输入的正整数 `n`,如果能整除,则说明 `n` 不是素数。否则,说明 `n` 是素数。
相关问题
C语言素数凯撒密码
素数凯撒密码是一种基于素数的加密算法,可以将明文转化为密文,保证信息的安全性。具体实现步骤如下:
1. 输入明文字符串和一个素数p(例如p=7);
2. 对于字符串中的每个字符,将其转化为ASCII码,然后加上p,再对256取模,得到密文字符的ASCII码;
3. 将得到的密文字符的ASCII码转化为字符,并将其连接起来,形成密文字符串。
解密的步骤与加密的步骤相反,具体实现如下:
1. 输入密文字符串和素数p;
2. 对于字符串中的每个字符,将其转化为ASCII码,然后减去p,再对256取模,得到明文字符的ASCII码;
3. 将得到的明文字符的ASCII码转化为字符,并将其连接起来,形成明文字符串。
以下是用C语言实现的素数凯撒密码代码:
```c
#include <stdio.h>
#include <string.h>
int is_prime(int n) // 判断是否为素数
{
if (n <= 1)
return 0;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0)
return 0;
}
return 1;
}
void encrypt(char *s, int p) // 加密函数
{
int len = strlen(s);
for (int i = 0; i < len; i++) {
s[i] = (s[i] + p) % 256;
}
}
void decrypt(char *s, int p) // 解密函数
{
int len = strlen(s);
for (int i = 0; i < len; i++) {
s[i] = (s[i] - p + 256) % 256;
}
}
int main()
{
char str[100];
int p;
printf("请输入明文字符串:");
scanf("%s", str);
printf("请输入一个素数p:");
scanf("%d", &p);
while (!is_prime(p)) {
printf("输入的数不是素数,请重新输入:");
scanf("%d", &p);
}
encrypt(str, p);
printf("加密后的密文为:%s\n", str);
decrypt(str, p);
printf("解密后的明文为:%s\n", str);
return 0;
}
```
注意:以上代码中未进行错误处理,请自行添加。
c语言素数之和
以下是使用 C 语言计算素数之和的示例代码:
```c
#include <stdio.h>
// 判断一个数是否为素数
int is_prime(int n) {
if (n <= 1) {
return 0;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
int main() {
int n = 100; // 求1~100内的素数之和
int sum = 0;
for (int i = 2; i <= n; i++) {
if (is_prime(i)) {
sum += i;
}
}
printf("1~%d内素数之和为:%d\n", n, sum);
return 0;
}
```
运行结果为:
```
1~100内素数之和为:1060
```
注意,此代码只计算了1~100内的素数之和,如果要计算更大的范围,需要做一些优化,例如使用筛法等算法。