0

ばかげた質問かもしれませんが、今は Objective C を学び、知識を広げようとしましたが、間違いから学びました。

そこで、エラストステネスのふるいを関数に適応させようとしました。関数が結果を受け取ったときに、関数が停止することを決定することを理解しています。

i を返すコードを適応させて、NSLog(@" Prime number %i", i); に表示されるすべての数値のリストを送信する方法であるかどうか、興味があります。関数を複数回実行する方法

ありがとう

私のコード

#import <Foundation/Foundation.h>

int erathos (int n)
{


 int i, prime, multiple, P[n];

  for (i = 2; i <= n; ++i)
   {
    P[i] = 1;
   }

for (prime = 2; prime <= n; ++prime)
{
    if (P[prime])

    for (multiple = 2 * prime; multiple <= n; multiple += prime)
    {


        if (P[multiple]) {

            P[multiple] = 0;

      } 
   }
}

for (i = 2; i <= n; ++i)
 {
    if (P[i])
     NSLog(@" Prime number %i", i);

 }
 return i;

}

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

   @autoreleasepool {
       int erathos (int n); 
       NSLog(@"Erathos %i", erathos (150));  
   }
   return 0;
}
4

3 に答える 3

0

NSArrayデータ型は、Objective-C の基本的な配列型です。はNSMutableArray可変配列型を表します。配列はオブジェクトのみを格納でき、 などのプリミティブ型は格納できないため、アイテムを配列に追加する前にオブジェクトにint変換する必要があります。NSNumber

#import <Foundation/Foundation.h>

NSArray* erathos (int n){
    int i, prime, multiple, P[n];
    for (i = 2; i <= n; ++i) {
        P[i] = 1;
    }

    for (prime = 2; prime <= n; ++prime) {
        if (P[prime]) {
            for (multiple = 2 * prime; multiple <= n; multiple += prime) {
                if (P[multiple]) {
                    P[multiple] = 0;
                }
            }
        }
    }

    NSMutableArray* array = [NSMutableArray array];
    for (i = 2; i <= n; ++i) {
        if (P[i]) {
            [array addObject:[NSNumber numberWithInt:i]];
        }
    }
    return array;

}

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

    @autoreleasepool {
        // To format any object, use the '@' type specifier.
        NSLog(@"Erathos %@", erathos (150));  
    }
    return 0;
}
于 2013-07-03T09:43:49.963 に答える
0

新しい NSArray パラメータを追加して、Krumelur ソリューションを適応させます。これにより、NSArray のインデックスからすべてのオブジェクトを使用できるようになります。

#import <Foundation/Foundation.h>

NSArray* erathos ( NSMutableArray* array, int n){
int i, prime, multiple, P[n];
for (i = 2; i <= n; ++i) {
    P[i] = 1;
}

for (prime = 2; prime <= n; ++prime) {
    if (P[prime]) {
        for (multiple = 2 * prime; multiple <= n; multiple += prime) {
            if (P[multiple]) {
                P[multiple] = 0;
            }
        }
    }
}


for (i = 2; i <= n; ++i) {
    if (P[i]) {
        [array addObject:[NSNumber numberWithInt:i]];
    }
}
return array;

}

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

@autoreleasepool {

     NSMutableArray* myArray = [NSMutableArray array];


     NSLog(@"Erathos %@", erathos (myArray,150));

     NSLog(@"myArray objectAtIndex 5 is is %@", [myArray objectAtIndex: 5]);






}
return 0;
}
于 2013-07-03T19:06:11.667 に答える