‘壹’ c语言编程 从键盘中输入一个偶数,编程实现将该偶数拆分成两个素数之和并输出在屏幕上
#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 ",i,n-i);
}
(1)c语言怎么拆分素数扩展阅读:
(1)两个连续整数中必是一个奇数一个偶数;
(2)奇数与奇数的和或差是偶数;偶数与奇数的和或差是奇数;任意多个偶数的和都是偶数;单数个奇数的和是奇数;双数个奇数的和是偶数;
(3)两个奇(偶)数的和或差是偶数;一个偶数与一个奇数的和或差一定是奇数;
(4)除2外所有的正偶数均为合数;
(5)相邻偶数最大公约数为2,最小公倍数为它们乘积的一半;
‘贰’ C语言:将10-20之间的全部偶数分解为两个素数之和。这个该怎么弄谢谢
#include<stdio.h>
//2-20的素数-----235711131719
//1020的偶数---101214161820
intchaifen(intx,intsushu[]);
intmain()
{
intsushu[8]={2,3,5,7,11,13,17,19};
for(inti=10;i<=20;i++)
{
if(i%2==0)chaifen(i,sushu);
}
return0;
}
//拆分函数,用来把一个偶数拆分为两个素数之和
intchaifen(intx,intsushu[])
{
inti,j;
for(i=0;i<7;i++)
{
for(j=i+1;j<8;j++)
{
if(x==sushu[i]+sushu[j]){
printf("%d=%d+%d ",x,sushu[i],sushu[j]); //如果找到了,就输出这个素数组合
return0; //结束函数
}
}
}
return0;
}
‘叁’ 用C语言如何判断素数
按照如下步骤即可用C语言判断素数:
1、首先打开visual C++ 6.0,然后点击左上角的文件,再点击新建。
‘肆’ c语言输入一个合数,使分解,素数则无法运行怎么弄
由数学基本定理可知:任何一个大于1的非素数整数(即合数)都可以唯一分解成若干个素数的乘积。编写程序,从控制台读入一个合数(合数的大小不会超过int数据类型表示的范围),求这个合数可以分解成的只出现一次的素数。例如合数1260分解成素数乘积为:22335*7,2和3出现两次,5和7出现一次,所以求得的结果为5和7。
【输入形式】
从控制台输入一个合数。
【输出形式】
在标准输出上按照由小到大的顺序输出分解后的只出现一次的素数,各素数之间以一个空格分隔,最后一个素数后也可以有一个空格。若没有只出现一次的素数,则什么都不输出。
【输入样例】
6154380
【输出样例】
5 29 131
【样例说明】
输入的合数为6154380,其分解成的素数乘积为:2 *2 *3 *3 *3 *3 *5 *29 *131,其中2出现两次,3出现4次,5、29和131只出现一次,所以只输出5、29、131。
偶然间想起来这个题目,如果我们没有去分析合数的性质直接去做的话,就会很麻烦。
如果没有分析合数,我们得先构造一个素数的数列,然后再循环找出能整除的素数,再去掉这个商和的重复数,再输出。
这时分析一下这个合数,题目中很明确的告诉我们这个是被唯一整除的,
然后所有的整数都可以用素数的乘积的形式表示,也就是说我们这时候没有必要去构造一个素数的数组,只要我们从2开始往返循环就可以完成素数的构造。这时这个题目的输出输入我们也要观察一下,很明显这个输出
22333*……从小到大排列,也就是说如果存在重复素数,那么必定相邻。然后在偶然启发下代码`