输入自然数 n,将 n 分解为质因子连乘的形式输出。


#include <stdio.h>
#include <math.h>
int prime_number(int n) {
    
     //判断整数 n 是否为素数
    int i,m,t,s=1; //s 是一个标志,s=1 表示是素数,s=0 表示不是素数
    m=sqrt(n);
    for(i=2; i<=m; i++) {
    
    
        t=n%i;
        if(t==0)
            s=0;
    }
    return s;
}
int  main() {
    
    
    int i,count=0,n,primes[1000],a[1000];
    int s,j=0,k=0;
    printf("请输入一个数据 n(n>=1):");
    scanf("%d",&n);
    while(n<=1) {
    
    
        printf("数据不合法,请重新输入数据:");
        scanf("%d",&n);
    }
    for(i=2; i<=n; i++) {
    
    
        s=prime_number(i);
        if(s==1)
            primes[++j]=i;
    }
    count=j;
    printf("%d=",n);
    for(i=1; i<=count && n>=primes[i]; i++) {
    
    
        while(n%primes[i]==0) {
    
    
            a[k]=primes[i];
            k++;
            n/=primes[i];
        }
    }
    for(i=0; i<k-1; i++)
        printf("%d*",a[i]);
    printf("%d\n",a[k-1]);
}



猜你喜欢

转载自blog.csdn.net/weixin_51626694/article/details/115736638