素数有关的问题,超时了,求优化。

img


#include<stdio.h>
int main()
{
int a,b,c,d,i,j;
scanf("%d",&a);
while(a--)
{
scanf("%d",&b);
for(c=1,i=2;i<b/2;i++)
{
if(b%i==0)
{
for(d=1,j=2;jj<=i;j++)
{
if(i%j==0)
{
d=0;
break;
}
}
if(d&&i
i!=b)
{
for(d=1,j=2;j*j<=b/i;j++)
{
if(b/i%j==0)
{
d=0;
break;
}
}
if(d)
{
printf("Yes\n");
c=0;
break;
}
}
}
}
if(c)
{
printf("No\n");
}
}
}

供参考:

#include <stdio.h>
int main()
{
    int i, j, k, t, flg, x;
    scanf("%d", &k);
    while (k--)
    {
        scanf("%d", &x);
        for (i = 2, flg = 0; i * i < x; i++)
        {
            if (x % i == 0)
            {
                t = x / i;
                flg = 1;
                for (j = 2; j * j <= t; j++)
                {
                    if (t % j == 0)
                    {
                        flg = 0;
                        break;
                    }
                }
                break;
            }
        }
        if (flg == 1)
            printf("Yes\n");
        else
            printf("No\n");
    }
    return 0;
}