首页 > 编程知识 正文

素数判断C语言,判断1到100素数的办法C语言

时间:2023-05-06 02:03:12 阅读:153579 作者:3239

目录1主题2分析3实现3.1 (普通暴力方法、低效) 3.2实现2 )略微优化) 3.3实现3 )最终优化,建议记录4运行结果

1主题

判断101到200之间的素数并输出

注:想节约时间的人可以直接看到实现3

2分析正题的关键是输出素数。 素数也称为素数,是指在大于1的自然数中,1和除此之外的系数消失的自然数。 必须是正整数,1和0既不是素数也不是全等数,所以在编写判断素数的函数时

在第一步中,首先判断给定的数是否大于2,小于2时直接判断为非素数,在第二步中,使用一个for循环对小于该数的各数依次取余数,取余数为0时判断为不是素数仔细想想就会发现,用大于一半的数去除一个数,一定无法整除,这个无法判断,所以需要在for循环中改进的答案很好。 数学有规律。 对于小于n的整数x,如果n不能被x整除,则n一定不能被n/x整除。 带来明显优化的是,循环控制语句可以从2到n sqrt{n} n。 这是因为,在判断2的同时也判断n/2。 循环到n sqrt{n} n时

3.1实现1 (常规暴力方法、低效) intisprime(intn ) if ) n2 ) { return 0; //0和1不是素数,而是直接判断(for ) intI=2; i n; I ) if(n%I==0) { return 0; //依次取余数,除尽则不是素数} } return 1; } 3.2实现2 (稍微优化) intisprime(intn ) if ) n2 ) { return 0; //0和1不是素数,而是直接判断(for ) intI=2; i n/2 1; I ) if(n%I==0) { return 0; //依次取余数,除尽则不是素数} } return 1; } 3.3实现3 (最终优化,建议记录此方法) include stdio.h # include math.hint isprime (intn ) if ) n2 ) { return 0; }for(intI=2; I=sqrt(n; I ) if(n%I==0) { return 0; } }返回1; (}int main ) ) for ) intI=101; i=200; I ) if(isprime ) I ) ) printf ) ' %dn ',I ); } } return 0; ) 4运行结果10110310710911312713113713713914915157163167179181191193197199

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。