当前位置:首页 » 编程语言 » c语言求质因数

c语言求质因数

发布时间: 2023-02-19 12:34:38

c语言算法之分解质因数

求出区间[a,b]中所有整数的质因数分解。

输入

输入两个整数a,b。

输出

每行输出一个数的分解,形如k=a1*a2*a3...(a1<=a2<=a3...,k也是从小到大的)(具体可看样例)。

样例输入

3 10

样例输出

3=3

4=2*2

5=5

6=2*3

7=7

8=2*2*2

9=3*3

10=2*5

蓝桥杯

#include<stdio.h>

#include<math.h>

int factor(int n)

{

        int i,j=(int)sqrt(n);

        if(n%2==0) return 2;

        for(i=3;i<=j;i++)

        if(n%i==0) return i;

        return n;

}

int main()

{

        int i, j, k, m, n;

        scanf("%d%d", &m, &n);

        for(i=m;i<=n;i++)

        {

        j=factor(i);

        k=i/j;

        printf("%d=%d",i,j);

                while(k>1)

                {

                j=factor(k);

                k=k/j;

                printf("*%d", j);

                }

        printf("\n");

        }

    return 0;

}

分解质因数牛逼方法

❷ c语言编程:求一个数的质因子

#include<stdio.h>
intmain()
{
inti,j,a[999999],x,y;
scanf("%d",&x);//读取
y=x;
for(i=2,j=0;i<=x;i++)//遍历质因数
{
if(x%i==0)//如果读取的数能够被质因数整除
{
a[j]=i;//将符合条件的质因数存到数组中
j++;//数组下标递增
x/=i;//重新赋值
i=2;//重新遍历
}
}
printf("%d=%d",y,a[0]);//输出原数、等号、第一个质因数
for(i=1;i<j;i++)
printf("×%d",a[i]);//如果存在第二个质因数,则继续输出
return0;
}

❸ C语言 求质因子

#include <stdio.h>
main()
{
int issushu(int);

int m,i;
printf("Please input a number(>0): ");
scanf("%d",&m);
printf("\nThe all Prime factors are: \n");

for(i=1;i<m;i++)
if(0==m%i)
if(issushu(i))
printf("%d ",i);
return 0;

}

int issushu(int n)
{
int i;
if(n<2) return 0;
if(n==2) return 1;
if(n>2 && n%2==0) return 0;
for(i=3;i*i<=n;i+=2)
if(n%i==0) return 0;
return 1;
}

❹ 求助c语言编程题目质因数分解

因为使用for循环从小到大判断其因数,而质数在由其组成的合数前面,所以如果i是n的因数,那么i一定是质因数,而且质因数会从小到大输出.

具体编程时,我们还应该使用n=n/i;,使for循环能快速满足终止条件,节省运行时间.用i--;,处理有多个重复质因数的情况.用count来统计相同质因数的个数.

具体的解释见注释

#include<stdio.h>

int main(){

//n输入的要分解的数,m前一个质因数,i循环变量

//flag第一个输出的质因数的标志变量,count统计有几个相同的质因数

int n,m,i,flag,count;

while(scanf("%d",&n)==1){//输入一个数n,直到一次输入的参数个数不等于1

flag=1;//第一次输出的质因数的标志为1

m=0;//前一个质因数赋初值为0

count=1;//相同质因数个数为1

for(i=2;i<=n;i++){ //for循环从2到n

if(n%i==0){//如果n能被i整除,则i为质因数

if(m==i){//如果质因数与前一个质因数相同

count++;//相同质因数个数加一

}else{//如果质因数与前一个质因数不同

if(flag==1){//如果是第一次输出

printf("%d",i);//输出第一个质因数

flag=0;//把标志变量置0,后面输出的质因数都不是第一个了

}else{//不是第一次输出

if(count==1){//有一个不相同的质因数输出

printf("*%d",i);//输出不相同的质因数

}else{//有多个相同的质因数输出

printf("^%d",count);//输出相同的质因数个数

count=1;//重置相同质因数个数为1

printf("*%d",i);//输出新的不同的质因数

}

}

}

m=i;//把当前质因数赋给存储前一个质因数的变量m

n=n/i;//改变循环范围n为n/i后的值

i--;//i减一,以处理有多个相同质因数的情况

}

}

if(count>1) printf("^%d",count);//如果有多个相同质因数,输出其个数

printf(" ");//换行

}

return 0;

}

❺ C语言:求一个整数的质因子(要求在图片上),咋写

代码文本:

#include "stdio.h"

int IsPrime(int n){//素数判断

int i;

if(n>2 && !(n&1) || n<2)

return 0;

for(i=3;i*i<=n;i+=2)

if(!(n%i))

return 0;

return 1;

}


int main(int argc,char *argv[]){

int n,i;

printf("Enter n(int n>1 and not a prime)... n=");

if(scanf("%d",&n) && n>1 && !IsPrime(n)){

putchar(' ');

for(i=2;i<=n;i++)

if(IsPrime(i) && n%i==0){

printf(i!=n ? "%d " : "%d ",i);

n/=i;

i=1;

}

}

else

printf("Input error, exit... ");

return 0;

}

❻ C语言,数组中的质因数

按照题目要求编写的数组中的质因数的C语言程序如下

#include<stdio.h>

voidf(){

intn,a[100],count=0,k;

scanf("%d",&n);

for(k=2;k<n;k++)

{

if(n%k==0)

{

a[count]=k;

count++;

n=n/k;

k--;

}

}

a[count]=n;

for(k=0;k<=count;k++)

{

printf("%d ",a[k]);

}

}

intmain(){

f();

return0;

}

热点内容
英雄联盟登录密码在哪里修改 发布:2024-11-08 07:25:16 浏览:515
努比亚有没有免费云存储 发布:2024-11-08 07:08:18 浏览:569
主机什么配置可以打绝地求生 发布:2024-11-08 07:08:18 浏览:988
方舟手游如何请入火影服务器 发布:2024-11-08 07:05:57 浏览:311
ip6根服务器最新消息 发布:2024-11-08 07:05:56 浏览:334
探探存储的图片在哪里找 发布:2024-11-08 07:04:32 浏览:224
slp用什么编译器 发布:2024-11-08 07:04:16 浏览:413
三一重工天泵参数密码是什么 发布:2024-11-08 06:59:45 浏览:660
攻击服务器数据库 发布:2024-11-08 06:45:57 浏览:909
godaddy的云服务器 发布:2024-11-08 06:44:43 浏览:444