Почему он показывает ошибку сегментации (SIGSEGV)...задача состоит в том, чтобы напечатать самый большой простой фактор.
Given a number N, the task is to find the largest prime factor of that number. Input: The first line of input contains an integer T, denoting the number of test cases. Then T test cases follow. Each test case contains an integer N. Output: For each test case, in a new line, print the largest prime factor of N. Constraints: 1 <= T <= 100 2 <= N <= 10^10 Example: Input: 2 6 15 Output: 3 5
Что я уже пробовал:
#include <bits/stdc++.h> using namespace std; void check(long long int n) { long long int p=2,i; bool prime[n+1]; memset(prime,true,sizeof(prime)); for(p=2;p*p<=n;p++) { if(prime[p]) { for(i=2*p;i<=n;i+=p) prime[i]=false; } } if(prime[n]) { cout<<n<<endl; } else { for(i=n/2;i>=2;i--) { if(prime[i]) { if(n%i==0) { cout<<i; break; } } } cout<<"\n"; } } int main() { int t; cin>>t; while(t--) { long long int n; cin>>n; if(n==1) cout<<n<<endl; else if(n==2) cout<<n<<endl; else if(n==3) cout<<n<<endl; else check(n); } return 0; }
CPallini
Уверены ли вы, что противопоказания верны (ваш код не падает в таких ограничениях)?
Prateek Krishna
Да,
Ограничения:
1 <= T <= 100
2 <= N <= 10^10
CPallini
Извини, что я неправильно понял.
Вы можете (то есть вы должен) реализовать его без выделения prime
массив.
Prateek Krishna
как же так?