MXLCM getting wrong answer

Here is my solution for MXLCM but I don’t know for which testcase this is wrong!!
can any one please point out the mistake…
#include<bits/stdc++.h>
#include <stdint.h>
using namespace std;
#define mod 1000000007
#define int long long int
int32_t main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t;
cin>>t;
while(t–)
{
int n,m;
cin>>n>>m;
int arr[n];
for(int i=0;i<n;i++)
cin>>arr[i];
int prime[m+1];
for(int i=0;i<=m;i++)
prime[i]=0;
prime[1]=1;
for(int j=0;j<n;j++)
{
int x=arr[j];
for(int i=2;i<=1ll*(sqrt(x)+0.5);i++)
{
int temp=0;
while((x%i)==0)
{x=x/i;temp++;}
prime[i]=max(temp,prime[i]);
}
if(x>2)
prime[x]=1;
}
int ans=1,val=m;
for(int j=m;j>=1;j–)
{
int x=j;
int num=1;
for(int i=2;i<=sqrt(x);i++)
{
int temp=0;
while((x%i)==0)
{
x=x/i;
temp++;
}
if((temp-prime[i])>0)
num=num*((temp-prime[i])i);
}
if(prime[x]==0)
num=num
x;
if(num>=ans)
{
ans=num;
val=j;
}
}
cout<<val<<endl;
}
}