insaneni 2022-09-22 19:52 采纳率: 66.7%
浏览 14
已结题

关于函数、素数表的问题,如何解决?

判断常数能否将前面所有素数整除,若不能整数,即为新素数,并保存至数组里。
用代码块功能插入代码,请勿粘贴截图
include<stdio.h>
//主函数 
//判断函数,返回值 
//输出数组
int main( void ){
    int num[100] = {2};
    int i = 3;//起始数 
    int count =1;//计数器
    
    while( count < 100 ){
        if( IsPrime( i , num , count ) ){
        num[count++] = i;
    }
    i++;
    }
    
    //输出数组 
    int a ;
    for(a=0;a<100;a++){
        printf("%d\t", num[count] );
        if( (a+1)%5==0 ){
            printf("\n");
        }
    }
    return 0;
} 
int IsPrime( int i , int num[ ] , int count){
    int ret = 1;
    int a;
    for( a=0 ; a<count ; a++ ){
        if( i%num[a] == 0 ){
            ret = 0 ;
            break;
        }
    }
    return ret;
}

不报错,也无结果
我的解答思路和尝试过的方法
教材代码:
#include<stdio.h>

int main(void)
{
    int prime[ 100 ]={2};
    int count=1;
    int i=3;
    
    while (count< 100 ){
        if( isprime(i,prime,count)){
            prime[count++]=i;
        }
        i++;
    }
    for(i=0;i<100;i++){
        printf("%d",prime[i]);
        if( (i+1)%5 )printf("\t");
        else printf("\n");
    }
    return 0;
}

int isprime(int x,int knownprimes[],int y){
    int ret=1;
    int i;
    for(i=0;i < y;i++){
        if(x% knownprimes[i]==0){
            ret=0;
            break;
        }
    }
    return ret;
}

  • 写回答

2条回答 默认 最新

  • 亖夕 Python领域新星创作者 2022-09-22 20:01
    关注

    结果

    img


    修改

    # include<stdio.h>
    //主函数
    //判断函数,返回值
    //输出数组
    int main( void ){
        int IsPrime( int i , int num[ ] , int count);
        int num[100] = {2};
        int i = 3;//起始数
        int count =1;//计数器
    
        while( count < 100 ){
            if( IsPrime( i , num , count ) ){
                num[count++] = i;
            }
            i++;
        }
    
        //输出数组
        int a ;
        for(a=0;a<100;a++){
            printf("%d\t", num[a]); // 修改num[count]
            if( (a+1)%5==0 ){
                printf("\n");
            }
        }
        return 0;
    }
    int IsPrime( int i , int num[] , int count){
        int ret = 1;
        int a;
        for( a=0 ; a<count ; a++ ){
            if( i%num[a] == 0 ){
                ret = 0 ;
                break;
            }
        }
        return ret;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月30日
  • 已采纳回答 9月22日
  • 创建了问题 9月22日

悬赏问题

  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP