当前位置:首页 » 编程语言 » c语言分解合数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言分解合数

发布时间: 2023-01-30 02:52:09

c语言编程:合数分解

#include<stdio.h>
intmain()
{
inti=2,n,m=0;
scanf("%d",&n);
while(i<=n)
{
if(n%i==0)
{m++;n/=i;}
else
{
if(m>1)printf("%d",i);
m=0;i++;
}
}
return0;
}

//运行示例:

❷ C语言 特殊合数问题求解不对……

这个主要是对合数的分解求和函数zyz有问题,比如求zyz(8),会返回2,而实际应该是2*2*2,和为6,稍微改了一下,你测一下是否符合你的要求?

int zyz(int a)
{
int i,sum=0;

while(heshu(a))
{
for(i=2;i<=a;i++)
if(a%i==0)
{
if(i<10)
sum+=i;
else
sum+=he(i);

a=a/i;
break;
}
}

if(!heshu(a))
{
if(a<10)
sum+=a;
else
sum+=he(a);
}

return sum;
}

❸ C语言求合数的质因数分解,并输出出现最多的质因数

这个程序写得太过复杂了,完全可以简单一点的。具体的算法是从2开始尝试找出给你写的数所有的质因数,并统计每一个质因数出现的次数。分别保存在两个数组中。

等到全部分解完成后,再检查其中出现次数最多的,进行输出就可以了。

下面是我的程序和运行结果:

#include <stdio.h>
int main()
{ int i,j,k=0,n,a[50],b[50]= {0};
scanf("%d",&n);
for(i=2; i*i<=n; i++)
{ for(j=1; n%i==0; n/=i)
{ if(j)
{ a[k]=i;
b[k]=1;
j=0;
}
else b[k]++;
}
if(!j)k++;
}
if(n>1)
{ a[k]=n;
b[k++]=1;
}
for(i=1,j=0; i<k; i++)
if(b[i]>=b[j])j=i;
printf("%d ",a[j]);
return 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*……从小到大排列,也就是说如果存在重复素数,那么必定相邻。然后在偶然启发下代码`

❺ 关于C语言,合数分解问题

#include <stdio.h>
#include <math.h>
int main()
{
int n=2,i;
while(n<=1000)
{
i=2;
int flag = 1;
while(i<=sqrt(n))
{

if(n%i==0)
{
if(flag)
{
printf("%d是合数,可分解如下: \n", n);//
flag = 0;
}
printf("%d = %d * %d ",n, i,n/i);
}
i++;
}
if(!flag)
{
printf("\n");
}

n++;
}
return 0;
}

❻ c语言编程:合数分解

#include<stdio.h>
intmain()
{inti,k,n;
scanf("%d",&n);
for(i=2;i*i<=n;i++)
if(n%i==0)
{k=0;
while(n%i==0){k++;n/=i;}
if(k>1)printf("%d",i);
}
printf(" ");
return0;
}

❼ C语言程序设计 输入一个合数进行分解,合数大于1小于10^11,按递增输出合数的质(素)因子。

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

intIsPrime(intm){
inti,flag=1;
if(m<2)return0;
if(m==2||m==3)return1;
for(i=2;flag&&i<sqrt(m);i++){
if(m%i==0)flag=0;
}
returnflag;
}

voidDissociation_Prime(intn){
inti,flag=1;
printf("%d=",n);
for(i=2;i<n;++i){
if(IsPrime(i)&&(n%i==0)){
if(flag){
printf("%d",i);
flag=0;
}
elseprintf("×%d",i);
n/=i;
--i;
}
}
if(flag==0)printf("×%d ",n);
elseif(n)printf("%d ",n);
}

intmain(){
inti;
for(i=12;i<=30;i++)
Dissociation_Prime(i);
return0;
}