C语言:任意输入一个偶数,请装它分解为两个素数之和。
发布网友
发布时间:2022-10-16 08:29
我来回答
共3个回答
热心网友
时间:2023-10-17 13:20
可以参考下面的代码:
#include<stdio.h>
int isprime(int n)
{
int i;
for(i=2;i<=n/2;i++)
if(n%i==0)
return 0;
return 1;
}
void main()
{
int n,i;
scanf("%d",&n);
for(i=2;i<n/2;i++)
if(isprime(i) && isprime(n-i))
printf("%d %d\n",i,n-i);
}
扩展资料:
1、for循环
for循环小括号里第一个“;”号前为一个为不参与循环的单次表达式,其可作为某一变量的初始化赋值语句, 用来给循环控制变量赋初值; 也可用来计算其它与for循环无关但先于循环部分处理的一个表达式。
2、if语句
if语句中的“表达式”可以是关系表达式、逻辑表达式,甚至是数值表达式,其中最直观、最容易理解的是关系表达式,所谓关系表达式就是两个数值进行比较的式子。
参考资料来源:百度百科-if语句
参考资料来源:百度百科-for循环
热心网友
时间:2023-10-17 13:21
把这个问题分为两步,首先得到<=该偶数的所有素数,然后产生两个素数,判断其和是否满足=偶数。程序如下:
#include<stdio.h>
#include<math.h> //用到开方函数
int prime(int m)//该函数判断m是否为素数,取一标志位,如果是则返回0,
{
int i,flag=1;
for(i=2;i<=sqrt(m)&&flag==1;i++)
if(m%i==0)flag=0;
return flag;
}
void main()
{
int n,j,k;
printf("Please enter number:");
scanf("%d",&n); //输入该偶数
for(i=2;i<=n-2;i++) //素数是大于1的自然数
if(prime(i)&&prime(n-i)) //如果两个数都是素数且和等于n,则输出
printf("%d=%d+%d\n",m,i,m-i);
}
热心网友
时间:2023-10-17 13:21
#include <stdio.h>
#include <math.h>
int f(int n)//判断n是否为素数,是则返回1,否则返回0
{
int i=2;
for(;i<=sqrt(n);i++)
if (n%i==0)return 0;
return 1;
}
void main()
{
int num,a;
do
{
printf("输入不为2的偶数num:");
scanf("%d",&num);
} while(num<=2||num%2);
for (a=2;a<=sqrt(num);a++)
if (f(a)&&f(num-a))
{
printf("%d=%d+%d\n",num,a,num-a);
break;
}
}