簡體   English   中英

素數分解,更改輸出。

[英]Prime factorization, changing output.

大家好,我有這段代碼。

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

int main()
{
    unsigned int num,i,j;
    int a=0;
    printf("Please input a number: ");
    scanf("%d",&num);
    printf("The Prime Factorization: ");
    for (i=2;i<=num;i++){
        if (num%i==0){
                a=1;
                if (i==num){
                printf(" %ld ",num);
                } else {
                    printf(" %ld *",i);
                    num/=i;
                }
        }


    }
    if (a==0){
            printf("%ld ",num);
    }


    return 0;
}

假設我輸入40,它給了我

素數分解:2 * 4 * 5

這是正確的,但是我如何使其將“ 2 * 4 * 5”輸出為“ 2 ^ 3 * 5”?

由於素數在因式分解中可以出現多次,因此您不能不先測試當前素數就繼續移動到下一個候選項,直到該數不再可被其除。

為了獲得理想的打印輸出,可以保留一個count變量,如下所示:

#include <stdio.h>

int main(void) {
    unsigned int num,i,count;
    int a=0;
    printf("Please input a number: ");
    scanf("%d",&num);
    printf("The Prime Factorization: ");
    i = 2;
    while(num>1){
        if (num%i==0){
                a=1;
                count = 1;
                num /= i;

                // Exhaust each prime fully:
                while (num%i==0) {
                    count++;
                    num /= i;
                }

                printf("%ld",i);
                if (count > 1) {
                    printf(" ^ %ld", count);
                }
                if (num > 1) {
                    printf(" * ");
                }
        }
        i++;
    }
    if (a==0){
            printf("%ld ",num);
    }


    return 0;
}

像這樣的東西:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int num,i,j,count=0;
    int a=0;
    printf("Please input a number: ");
    scanf("%d",&num);
    printf("The Prime Factorization: ");
    for (i=2;i<=num;i++){
        count=0;
        a=0;
        while(num%i==0){
            a=1;
            ++count;
            num/=i;
            }
        if(a==1)
       {
            printf("%d ^ %d *",i,count);
        }
   }
   if (a==0){
        printf("%ld ",num);
}
return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM