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日

悬赏问题

  • ¥100 支付宝批量检测实名工具
  • ¥15 基于单片机的靶位控制系统
  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题