关于#输出格式#的问题,如何解决?(语言-c语言)

题目描述
给定一个正整数n,如果n的各个位数之和是一个素数,同时n本身又是一个回文数,那么n就是我们所说的特殊的回文“素数”。
输入格式
输入一个正整数n(n的位数最高不超过1000位)
输出格式
如果n是特殊的回文“素数”,请输出yes,否则输出no。
样例输入
111
样例输出
yes
样例输入
11111111
样例输出
no
样例解释
样例一:
111各个数位上的数字和为3,3是一个素数,并且111是回文数,所以111是特殊的回文素数

样例二:
11111111各个数位上的数字和为8,不满足特殊的回文数的定义


#include <string.h>
#include <stdio.h>
int isprime(int n)
{
    if(n<2)
        return 0;
    for(int i=2;i<n;i++)
        if(n%i==0)
            return 0;
    return 1;
}

int hw(char *a)
{
    int len = strlen(a);
    int i=0,j=len-1;
    while(i<j)
    {
        if(a[i] != a[j])
            break;
        i++;
        j--;
    }
    if(i>=j)
        return 1;
    return 0;
}

int main()
{
    char s[1001];
    int sum = 0;
    gets(s);
    int i=0;
    while(s[i] != 0)
    {
        sum += s[i] - '0';
        i++;
    }
    if(isprime(sum) && hw(s))
        printf("yes");
    else
        printf("no");
    return 0;
}
#include<stdio.h>
int main()
{
    char a[1000];
    int n=0,i,j,sum=0;
    while(scanf("%c",&a[n++])!=EOF);
    for(i=0,j=n-1;i<=j;i++,j--)
    {
        if(a[i]!=a[j])
        {
            printf("no");
            return 0;
        }
        if(i==j)
        {
            sum+=a[i]-'0';
        }
        else
        {
            sum+=a[i]+a[j]-'0'-'0';
        }
    }
    for(i=2;i*i<=sum;i++)
    {
        if(sum%i==0)
        {
            printf("no");
            return 0;
        }
    }
    printf("yes");

    return 0;
}