编译没有错误,为什么运行结果不对

#include<stdio.h>
#include<stdlib.h>
int JSValue(int m,int n)
{
int i,j,cnt;
cnt=0;
for(i=m;i<=n;i++)
{
for(j=2;j<i/2;j++)
{
if(i%j==0)
break;
if(i%j!=0)
cnt++;
}
}
return cnt;
}
int main()
{
int JSValue(int m,int n);
int m,n,cnt;
scanf("%d %d",&m,&n);
printf("%d\n",&cnt);
return 0;
}

#include<stdio.h>
#include<stdlib.h>
int JSValue(int m,int n)
{
    int i,j,cnt;
    cnt=0;
    for(i=m; i<=n; i++)
    {
        for(j=2; j<i/2; j++)
        {
            if(i%j==0)
                break;
            if(i%j!=0)
                cnt++;
        }
    }
    return cnt;
}
int main()
{
    
    int m,n,cnt;
    scanf("%d %d",&m,&n);
    printf("%d\n",JSValue(m,n));
    return 0;
}