首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找到1到N之间的好数字

找到1到N之间的好数字
EN

Stack Overflow用户
提问于 2021-06-22 21:52:15
回答 1查看 89关注 0票数 0

如果一个数字本身是质数,并且该数字的个位数应该是质数,那么这个数字就是一个好数字。

我不知道我在这段代码中做错了什么。

代码语言:javascript
复制
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
int main(){
    int n=257;
    int i,k;
    int count=0;
    for(i=2;i<n;i++){
        if(n%i==0){
            printf("not a good number");
            break;
        }
    }
    if(i==n){
        for(k=2;i!=0;k+=2){
            if(i%10==k){
                i=i/10;
                count++;
            }
        }
    }
    printf("%d", count);
}

我没有得到3作为计数的输出。我试着检查257是否是质数,在第二部分中,我划分了每个元素,看看每个元素是否都是质数。

EN

回答 1

Stack Overflow用户

发布于 2021-06-22 21:59:08

那部分

代码语言:javascript
复制
for(k=2;i!=0;k+=2){
    if(i%10==k){
        i=i/10;
        count++;
    }
}

将是一个无限循环,因为i%107,而i=257k不是该值,因为它是偶数。

众所周知,一位素数的集合是{2, 3, 5, 7},因此您可以简单地对照列表进行检查。

代码语言:javascript
复制
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
int main(){
    int n=257;
    int i,k;
    int count=0;
    for(i=2;i<n;i++){
        if(n%i==0){
            printf("not a good number");
            break;
        }
    }
    if(i==n){
        for(;i!=0;i=i/10){
            int d=i%10;
            if(d!=2 && d!=3 && d!=5 && d!=7){
                printf("not a good number");
                break;
            }
            count++;
        }
    }
    printf("%d", count);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68084825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档