质数组成的整数? C语言

输入一个N位数,N大于等于2且小于8.

考察每一组两位数,判断每一组两位数都是质数的,请输出YES,否则输出NO。

例如:

“537”中有53,37两组两位数,都是质数,所以输出YES.

“4236”中有42,23,36三组两位数,且不都是质数,因此输出NO.

2个回答

#include<stdio.h>

int table[100];

void prime(){
    int i,j,k;
    for(i=2;i<100;i++){
        table[i]=1;
    }
    for(i=2;i<=10;i++){
        if(table[i]==1){
            k=2*i;
            for(j=2;k<100;j++){
                table[k]=0;
                k=i*j;
            }
        }
    }
}

void fun(int n){
    int t;
    while(n>0){
        t=n%100;
        if(table[t]==0){
            printf("NO");
            return;
        }
        n=n/10; 
    }
    printf("YES");
}

int main(){
    int n;
    scanf("%d",&n);
    prime();
    fun(n);
    return 0;
} 

这样的题容易,一个判断素数的函数,用100求余,循环除以10即可,不过没说明若有素数又有非素数如何处理。

int 判断素数(int n)
{//缘由https://bbs.csdn.net/topics/395073041
    int a = 3;
    if (n == 1 || n == 2)return 1;//n == 1只有两个正因数(1和自己)的自然数即为素数,历史上曾将1也包含在质素之内。
    if (n % 2) while (n > a) if (n % a) a += 2; else return 0; else return 0;
    return 1;
}
main()
{
int aa=0;
cin>>aa;
while(aa>10)cout<<(aa%100)<<(判断素数(aa%100)?"Y":"N")<<"\t",aa/=10;
}

直接写未调试

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问