簡體   English   中英

從一個陣列轉移到另一個陣列

[英]Transfer from one array to another

我有一個循環來檢查傳遞參數可以被哪些數字整除。 所有符合此條件的數字都將存儲在另一個數組中。 我該如何設置?

 #include <stdio.h>


void primfaktorzerlegung(int * zahl, int * ausgabe){

int array_primzahlen[] = {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97};
int length = sizeof(array_primzahlen)/sizeof(int);
int i = 0;
int j = 0;

for(int k = 0; k<*zahl; k++){
    for( i = length; i>=0; i--){
        
        if(*zahl % array_primzahlen[i] == 0){
           *(ausgabe + j) = array_primzahlen[i];
            j++;
        *zahl = *zahl / array_primzahlen[i];
        
   
        }
        if(*zahl == 2){
            *(ausgabe + j) = array_primzahlen[i];
        }
    }
}
}


int main(void)
{
int ausgabe[10];
int zahl = 8;
primfaktorzerlegung(&zahl, ausgabe);

for(int i = 0; i<10; i++){
printf("%d, ", ausgabe[i]);
 
}
return 0;
}

這是我目前的狀態。 “數字” 8 將被分解為其素數,即:2, 2, 2 這也有效,但數組中也存儲了完全不同的數字:

 2, 2, 2, 21883, 0, 0, -1385004928, 21883, 738867344, 32765

也許是這樣的:

void primfaktorzerlegung(int zahl, int * ausgabe){

    int array_primzahlen[] = 
        {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97};
    int length = sizeof(array_primzahlen)/sizeof(int);
    int i = 0;
    int j = 0;

    for( i = length; i>=0; i--){
        if(zahl % array_primzahlen[i] == 0){
        /*Here should be the transfer*/
            *(ausgabe + j) = array_primzahlen[i];
            j++;
        }

    }
}

我不知道您是否希望以相反的順序存儲數字。 在這種情況下,您可以在之后反轉數組。

暫無
暫無

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

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