C语言输入一个不大于10000的正整数S为两个质数的和,要求输出一个整数为两个质数的最大乘积
时间: 2024-04-30 14:23:17 浏览: 18
思路:
1. 定义一个函数isprime(),用于判断一个数是否为质数。
2. 判断每个数是否为质数,并且判断另一个数是否也为质数,如果是,则计算它们的积,并比较大小。
3. 输出最大的乘积。
代码实现:
```c
#include <stdio.h>
int isprime(int n)
{
int i;
if(n == 2 || n == 3) return 1;
if(n == 1 || n % 2 == 0) return 0;
for(i = 3; i * i <= n; i += 2)
if(n % i == 0)
return 0;
return 1;
}
int main()
{
int s, i, max = -1;
scanf("%d", &s);
for(i = 2; i <= s / 2; i++)
{
if(isprime(i) && isprime(s - i))
{
if(max < i * (s - i))
max = i * (s - i);
}
}
printf("%d", max);
return 0;
}
```
运行结果:
```
输入:20
输出:91
```
说明:20可以表示为2+18、3+17、5+15、7+13中的任意一组,而其中最大的乘积为7×13=91。
相关问题
c语言,输入一个大于1的正整数,分解出其质因数
以下是一个简单的C语言程序,用于分解一个大于1的正整数为其质因数:
```
#include <stdio.h>
int main() {
int n, i;
printf("请输入一个大于1的正整数:");
scanf("%d", &n);
printf("%d = ", n);
for (i = 2; i <= n; i++) {
while (n % i == 0) {
printf("%d", i);
n /= i;
if (n > 1) {
printf(" × ");
}
}
}
printf("\n");
return 0;
}
```
输入一个大于1的正整数后,程序将从2开始循环,如果该数能被整除,则输出该数为一个质因数,并将该数除以该质因数,继续循环直到该数被分解为1。如果该数不能被整除,则继续循环,直到找到下一个质数。最终输出所有的质因数乘积的形式。
用c语言已知正整数n是两个不同的质数的乘积,试求出两者中较大的那个质数 输入一个正整数n,输出一个正整数p,即较大的那个质数。
您好,根据您的问题,我可以回答。以下是代码实现:
```
#include <stdio.h>
int main()
{
int n, i, p;
printf("请输入一个正整数n:");
scanf("%d", &n);
for(i = 2; i <= n / 2; i++)
{
if(n % i == )
{
p = n / i;
break;
}
}
printf("较大的质数为:%d\n", p);
return ;
}
```
希望能够帮到您!