求500以内的最大素数,我的代码有问题,没有报错但出不来结果

500以内的最大素数。编程计算n(n<=500)以内的10个最大素数及其和,分别输出这最大的10个素数及其和。n的值要求从键盘输入。要求10个素数按从大到小的顺序输出。(总分占比50%)

程序运行示例1:
Input n(n<=500):10↙
7 5 3 2
sum=17
程序运行示例2:
Input n(n<=500):100↙
97 89 83 79 73 71 67 61 59 53
sum=732

输入提示信息:"Input n(n<=500):"
输入格式: "%d"
10个最大素数的输出格式:"%6d"
10个最大素数和的输出格式:"\nsum=%d\n"

我的代码:
#include<stdio.h>
#include<math.h>
int main()
{
int n,i,x,count=0;
int a[500];
int sum=0;
printf("Input n(n<=500):");
scanf("%d\n",&n);
for(x=0;x<=n;x++)
{
for (i=2; i<=sqrt(x); i++)
{
if (x % i == 0 )
{
a[count]=x;
count++;
sum+=x;
}
}
for(;count>=count-10;count--)
{
printf("%d\t",a[count]);
}
printf("\n sum=%d\n",sum);
}
return 0;
}

修改如下,供参考:

#include<stdio.h>
#include<math.h>
int main()
{
    int n, i, x, count = 0;
    int a[500], flg;       //修改
    int sum = 0;
    printf("Input n(n <= 500):");
    scanf("%d", &n);       //scanf("%d\n", &n);修改
    for (x = n, count = 0, sum = 0; count < 10 && x > 1; x--)  //for (x = 0; x <= n; x++)
    {
        for (i = 2, flg = 1; i <= sqrt(x); i++) //修改
        {
            if (x % i == 0)
            {
                flg = 0;       //修改
                break;
                //a[count] = x;
                //count++;
                //sum += x;
            }
        }
        if(flg)               //修改
        {
            printf("%6d", x);//修改
            count++;
            sum += x;
        }
    }
    printf("\nsum = %d\n", sum);
    return 0;
}


素数筛法 素数判断
你这个就是判断素数方法写好就行 然后for循环500 到 0 取10个之后break 之后打印和