900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 《c语言入门题目19》判断一个数是不是质数(素数)

《c语言入门题目19》判断一个数是不是质数(素数)

时间:2018-08-26 12:00:30

相关推荐

《c语言入门题目19》判断一个数是不是质数(素数)

前言:(内容仅供分享和参考):

什么是质数:质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数(规定1既不是质数也不是合数)。========================================================================

题目:编写编程,判断在指定范围内的数是不是质数(素数)

代码:(用到的软件:VisualStudio)

(用Dev-C++的把scanf_s换成scanf就行了)

1.如何判断是不是素数

这里用到的判断方法是一个个去除,比如让5分别处以1,2,3,4,5,如果该数能被该数范围内的数求余为0,说明该数有能被除了1和它自身外的其他自然数整除,所以不是素数。

int prime(int n){if (n < 2) return 0;//根据质数定义,排除特殊情况int flag = 1;//定下一个标识for (int i = 2; i < n; i++){if (n % i == 0)//如果能被取余为0,这输出0,直接跳过,因为该数已经不是质数了,比如4,4%2=0;//所以可以直接break跳过这一个数的判断,直接进入下一个//如果都判断完了,都没有取余到0,说明该数只能被1和他本身整除,是质数//还记得一开始下的标识是1吗,如果没有进入到if语句的执行条件,那么最后的返还结果就是1{flag = 0;break;}}return flag;}

如果能被取余为0,这输出0,直接跳过,因为该数已经不是质数了,比如4,4%2=0;

所以可以直接break跳过这一个数的判断,直接进入下一个。如果都判断完了,都没有取余到0,说明该数只能被1和他本身整除,是质数(当然一开始要排除特殊情况,比如负数和1)

还记得一开始下的标识是1吗,如果没有进入到if语句的执行条件,那么最后的返还结果就是1,

输入到print_prime函数的if中判断为真(因为是1,假就是0),接着输出打印这一质数即可。

2.用指针去修改内存,达到一个可以让用户在输入窗口修改范围的效果。

(这样就不用老是在编译器里改了)

void print_prime(int* a, int* b)//定义指针a,b方便修改内存变量,到达可供外部输入的效果{printf("请输入要判断是否是质数的范围,用空格隔开两个数:");//提示语scanf_s("%d%d", a, b);for (int i = *a; i <= *b; i++)//开始循环{if (prime(i))//应用判断质数函数{printf("%d是质数。\n", i);//将范围内的质数答应出来}}}

全部代码:

#include<stdio.h>int prime(int n){if (n < 2) return 0;int flag = 1;for (int i = 2; i < n; i++){if (n % i == 0){flag = 0;break;}}return flag;}void print_prime(int* a, int* b){printf("请输入要判断是否是质数的范围,用空格隔开两个数:");scanf_s("%d%d", a, b);for (int i = *a; i <= *b; i++){if (prime(i)){printf("%d是质数。\n", i);}}}int main(){int a=0, b=0;print_prime(&a,&b);return 0;}

========================================================================

结果图:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。