Do rozwiązania następujący problem:
//Dane są: liczba naturalna M ≥ 1 i tablica A[1...M] zawierająca M liczb naturalnych
z przedziału [2, N]. Korzystając z powyższego algorytmu, zaprojektuj algorytm,
wyznaczający te liczby z przedziału [2, N], które nie są podzielne przez żadną z liczb
A[1],..., A[M].//
Moj program:
#include <stdio.h>
int main()
{
int m, licznik=1;;
int n;
printf("Podaj ilosc liczb: ");
scanf("%u", &m);
int A[m+1];
bool T[m+1];
for(int i=0;i<=m;i++)
T[i]=0;
printf("Podaj %u liczb: ", m);
for(int i=1;i<=m;i++)
scanf("%i", &A[i]);
printf("Podaj wielkosc przedzialu: 2-");
scanf("%i", &n);
int i=A[licznik];
printf("n: %i\n", n); //1 <------
while(i<n)
{
if(T[i]==0)
for(int j=i;j<=n;j+=i)
T[j]=1;
licznik++;
i=A[licznik];
}
printf("n: %i\n", n); //2 <------
printf("\nLiczby z przedzialu <2, %i> niepodzielne przez zadna podana liczbe:\n", n);
for(int q=2;q<=n;q++)
if(T[q]==0)
printf("%i ", q);
return 0;
}
Dla wejscia:
1
3
100
Program w miejscach oznaczonych 1 i 2 wypisuje dwie rożne wartosci(?!): 100 i 1.
Dla wejscia:
1
3
800
Mam "naruszono limit ochrony pamięci", a pamięć nie zależy od ostatniej wprowadzanej danej.
Dla innych wejsc od razu konczy dzialanie. Dla niektorych działa dobrze.
O co do cholery chodzi...? Uprzedzając - wiem, ze można to napisać ładniej, ale w treści zadania mam Korzystając z powyższego algorytmu.