lddongdong 2021-10-22 08:27 采纳率: 100%
浏览 61
已结题

请问前n个质数模上50000的算法代码如何理解呢?

img

#include<stdio.h>
int main(){
    int n,i,j=2,x,k=1;
    scanf("%d",&n);
    while(n){
        x=0;
        for(i=2;i<j;i++){
            if(j%i==0){
                x=1;
                break;
            }
        }
        if(x==0){
            k=(k*j)%50000; 
            n--;//n-1 
        }
        j++;
    }
    printf("%d",k); 
    return 0;
} 

  • 写回答

1条回答 默认 最新

  • CSDN专家-link 2021-10-22 08:32
    关注

    因为乘积可能会很大,为了确保整数类型能够存储结果,所以求余50000

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    lddongdong 2021-10-22 08:35

    n,i,j,x,k各代表什么?

    回复
    CSDN专家-link 回复 lddongdong 2021-10-22 08:38

    n用来统计已经计算了多少个质数。当n--到0时,表示已经统计了指定数量的质数了
    i只是个循环变量,这个for循环是用来判断j是否为质数的。判断质数的方法是,如果某个数求余所有比它小的数(从2开始)的余数都不是0,那么该数是质数
    j是从2开始的整数,每次while循环加1,判断j是否为质数,是则进行累加
    x是个标志量,表示j是否为质数。为0表示是质数,为1表示不是质数
    k是最后的累加值结果

    回复
编辑
预览

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月23日
  • 已采纳回答 10月22日
  • 创建了问题 10月22日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部