C语言问题求大佬解答啊啊

图片说明
这个为什么答案老是不对啊

#include<stdio.h>
int cn(int a,int b);
int main()
{
    int n,a,b,s;
     scanf("%d%d",&a,&b);
    s=cn(a,b); 
    printf("%d\n",s);
    return 0;
}

/* 请在这里填写答案 */
int g(int a)
{
int i,q=0;
for(i=1;i<=a;i++)
    if(a%i==0)
        q++;
return q;
}
int gg(int a)
{int i,q=1;
for(i=1;i<=a;i++)
    if(g(i)>g(a))
        q=0;
return q;
}
int cn(int a,int b)
{
    int j,max=g(a),m;
    for(j=a;j<=b;j++)
       {if(g(j)>max&&gg(j)==1)
            {max=g(j);
            m=j;}}
    return m;
}

#include "pch.h"
#include
//求因子个数
int yz(int t) {
int ans = 0;
for (int i = 1; i <= t; i++) {
if (t%i == 0) {
ans++;
}
}
return ans;
}
//判断是否为反素数
bool pd(int x) {
int dz = yz(x);
for (int i = 1; i <= x - 1; i++) {
if (yz(i) >= dz) {
return false;
}
}
return true;
}

int pn(int n) {
int i = 0;
for (int i = n; ; i--) {
if (pd(i) == true) {
return i;
//break;
}
}
}
//比较两数之间的因子个数
void cn(int a, int b) {
if (pn(a) == pn(b)) {
if (a < b) {
printf_s("%d", a);
}
else printf_s("%d", b);
}
else if (pn(a) > pn(b)) {
printf_s("%d", a);
}
else
printf_s("%d", b);
}
int main() {
int a,b;
scanf_s("%d%d", &a,&b);
/*for (int i = n; ; i--) {
if (pd(i) == true) {
printf_s("%d", i);
break;
}
}*/
cn(a, b);
return 0;
}