C++与C语言:质数判断方法比较及代码示例
C++判断一个数是否为质数
方法一:用m除以2到m-1之间的每个整数如果它不可整除,则m是素数。
方法2:将m除以2到√m之间的每个整数。
如果m不能被2到√m之间的任何整数整除,则m必须是质数。
两段代码的输出是相同的。
①输入一个整数:1,所以1是素数。
②输入一个整数:97,所以97是质数。
③输入一个整数:10,所以10不是素数。
C语言输入一个整数,判断是否是质数?
#include
intmain()//主函数
{
intnumber,i;//定义变量
printf("请输入随机数:");//提示语句
scanf("%d",&number);//将判断键盘输入的数字
for(i=2;i<=number-1;i++)//循环从2开始,到这个数字之前的数字结束
{
if(number%i==0)//如果剩余分数为0
break;
}
if(i { printf("%d不是素数",number); } else { printf("%d是质数",number); } return0;//函数的返回值为0 }求质数的个数
素数是数学的重要组成部分所谓素数就是除了1和它本身之外没有因数的数。
下面总结一下C语言中如何求素数问题:输入一个正整数n(n>=2),找出所有不大于n的素数方法一:方法思路循环:判断一个数n是否是素数,您可以将n除以2和√n之间的所有整数。
如果两者都不可整除,则n是素数。
设计环巢时,尽量避免不必要的情况。
1、“2”是必须出现且可以单独出现的素数。
这样就可以从3到√n判断循环。
2、为什么只判断√n以内的数?因为n=√n*√n,除√n外,n的因数都是成对存在的,且一个必须大于√n,另一个必须小于√n。
有一个大于√n的因子(不是n本身),那么n必定有一个小于√n的对应因子。
3、除了数字2之外,没有质数,因此设计循环时可以将步数设置为2。
方法二:排序法(空间与时间交换)思路:列出从2到n的所有数字,然后从2开始,先去掉2到n所有倍数,然后每次从下一个剩余的数字开始(必须是质数)),对n内的所有倍数进行排序,剩下的数都是素数。
1、建立一个数组a[]a[i]的值为1,表示i是素数。
a[3*m]...设置为03。
输出i,a[i]值为1。