Решение на горната задача чрез използване на масиви #include int main { int fibs[200]; int primes[200]



Дата24.07.2016
Размер14.53 Kb.
ТипРешение

Да се отпечатат всички естествени числа от 1 до N (N<200), които са числа на Фибоначи и същевременно са прости числа.

вход

Изход

N= 5

2 3 5




Просто число е число, което се дели само на едно и на себе си. (Първото просто число е 2.)




Числата на Фибоначи се получават по следния начин: първото е 1, второто е 1, а всяко следващо е сума от предните две.



#include

int main() {

int eprosto;

int N, del, f3, f1=1, f2=1;

scanf("%d", &N);

for (; ; )

{

f3=f1+f2;



eprosto=1;

if (f3<=N)

{

for (del=2; del<=f3/2; del++)



if (f3%del==0)

{

eprosto=0;



break;

}
if (eprosto) printf("%d ", f3);

f1=f2;

f2=f3;


}

else break;


}

return 0;


}



Решение на горната задача чрез използване на масиви

#include


int main() {

int fibs[200];

int primes[200];
int i, j, ind_fibs, ind_primes, del, eprosto, N;
scanf("%d", &N);

// намира числата на фибоначи и ги записва в масив fibs

fibs[1]=1;

fibs[2]=1;


for (i=3; ;i++)

{

fibs[i] = fibs[i-1]+fibs[i-2];



if (fibs[i]>N) break;

}

ind_fibs=i;

// намира простите числа от 2 до N и ги записва в масив primes

i=1;j=2;


for ( ;j<=N; j++)

{ eprosto = 1; //предполагаме, че поредното число j е просто

for (del=2; del<=j/2; del++)

if (!(j%del)) {eprosto=0; break;}

if (eprosto) {primes[i]=j; i++;} //напишете вариант, така че да пропуснете скобите

}

ind_primes = i-1;


//проверява кои числа от двата масива съвпадат

for (i=1; i<=ind_fibs; i++)

for (j=1; j<=ind_primes; j++)

if (fibs[i]==primes[j]) {printf("%d ", fibs[i]); break;}

return 0;

}


Задачи за изследване на двете решения:



Поделитесь с Вашими друзьями:


База данных защищена авторским правом ©obuch.info 2019
отнасят до администрацията

    Начална страница