??为什么超过四位数就不能输出了运行了

#include<iostream>
using namespace std;
bool gt(int num){//判断是否为素数 
    unsigned long long int a=0,q;
    for(q=2;q<num-1;q++){
    if(num%q==0)
        a++;    
}
if(a==0)
    return true;
else
    return false;
}
bool isfive(int c){//判断素数中包含5的个数 
    while(c>0){
        if(c%10==5)
        return true;
        c=c/10;
    }
    
}
int main(){
    int k=0;
    unsigned long long int i=2,j;
    for(i=2;i<=9999;i++){//为什么超过四位数就不能输出了运行了 
    if(gt(i))
    {
        j=i;
        if(isfive(j))
            k++;
        
    }
    
    }
    cout<<i<<endl; 
    cout<<k;
    return 0;
}

该源码测试没有问题,这样改程序效率更高一些:


#include "stdio.h"
int gt(int num){//判断是否为素数 
    int a=0,q;

     //排除1和num自己就可以了,不需要减一
    for(q=2;q<num;q++){
        if(num%q==0){
            a=1;
            break;    
        }
    }
    return a;
}
int isfive(int c){//判断素数中包含5的个数 
    while(c>0){
        if(c%10==5)
            return 1;
        c=c/10;
    }
    
}
int main(){
    int k=0;
    int i=2;
    for(i=2;i<=99999;i++){
         if(gt(i))
        {
             if(isfive(i))
                 k++;
        }
    
    }
    printf("i=%d,k=%d\n",i,k);
    return 0;
}

学习C语言更多技术,请参考:https://edu.csdn.net/course/detail/2766

0基础学C语言:https://edu.csdn.net/course/detail/2766

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632