求判断素数的C语言程序

求判断素数的C语言程序,第1张

C语言-寻找素数

附代码:

#include<stdioh>

#include<mathh>

int main()//原理:设ab=c,a<b,则有a<根号c<b。若设a恒小于根号c,则只需判断a是否为因数

{

int a, b;

printf("请按从小到大输入两个素数:");

scanf_s("%d %d", &a, &b);

int n = 0,m=0,sum = 0;

double i, j;//i是从a到b的待筛选数,j是从2到根号i的除数,要判断j是否为i的因数

for (i = a; i <= b; i++)

{

m = 0;

int c = int(pow(i, 05));

for (j = 2; j <= c; j++)

{

if ((i / j - int(i / j)) == 00)

{

m++;//m是i被从2到根号i的j除了之后,商为整数,即发现j是i的因数的次数

}

}

if (m==0)

{

printf("找到素数:%d\n", int(i));

n++;

sum = sum + i;

}

}

printf("大于等于%d,小于等于%d的素数的个数为:%d\n", a, b, n);

printf("它们的和为:%d", sum);

return 0;

}

#include&lt;iostream&gt;

#include"mathh"

using namespace std;

bool isPrimeNumber(int number){//判断是否为素数

float sqrtOfNum=sqrt(number);

for(int j=2;j&lt;=sqrtOfNum;j++)//从2到number的算术平方根迭代

if(number/jj==number)//判断j是否为number的因数

return false;

return true;

}

void printNum(int number){//打印出&lt;=number的所有质数

int j=0;

for(int i=2;i&lt;=number;i++)

if(isPrimeNumber(i)==true){

cout&lt;&lt;("%-5d",i)&lt;&lt;"";

j++;

if(j%10==0)//每隔十个数字换行

cout&lt;&lt;endl;

}

}

int main(){

long start=time(NULL);

cout&lt;&lt;(bool)isPrimeNumber(29)&lt;&lt;endl;

printNum(1000);

long end=time(NULL);

cout&lt;&lt;endl&lt;&lt;"Time spent:"&lt;&lt;(end-start+1)&lt;&lt;endl;

}

扩展资料:

C++100以内的素数代码:

#include&lt;iostream&gt;

#include&lt;mathh&gt;

using namespace std;

const int N=300;

bool prime[N];//布尔数组变量0、1

void primeNum(int a);

void printPrimeNum();

//主函数

int main()

{

primeNum(N);

printPrimeNum();

return 0;

}

//得到N以内的素数

void primeNum(int a)

{

int i,j,n=0;

for(i=2;i&lt;a;i++)//第一轮筛选去掉2的倍数

{

if(i%2)prime&lt;i&gt;=true;

else prime&lt;i&gt;=false;

}

for(i=3;i&lt;=sqrt((double)a);i++)//double(N)是将N强制转换为双精度整型,求平方根i=3,5,7,9

{

if(prime&lt;i&gt;)

for(j=2i;j&lt;N;j+=i)prime[j]=false;//第二轮筛选相当于j=ni,去掉3,5,7的倍数

}//经过两轮筛选相当于去掉了2,3,5,7的倍数

}

//打印N以内的素数

void printPrimeNum()

{

int i,n=0,primeList[N];

for(i=2;i&lt;N;i++)

if((i==2)||(prime&lt;i&gt;))primeList[n]=i,n++;

cout&lt;&lt;N&lt;&lt;"以内的素数个数为:"&lt;&lt;n&lt;&lt;endl&lt;&lt;"它们分别是:"&lt;&lt;endl;

for(i=0;i&lt;n;i++)cout&lt;&lt;primeList&lt;i&gt;&lt;&lt;"";

}

1、写我们的头文件和主函数。写好我们的开头。

2、编写定义变量,我们语言定义一个i来用于后面的for循环。

3、我们输入一个数,在那之前我们要有一个printf()提示一下。

4、利用for循环看一看从2到n-1是否能被n整除,如果能就要break。

5、判断素数,如果程序正常结束,就i>=n,说明他就是素数。

6、如果通过break结束,他就会i<n,所以他就不是素数。

7、输出最后结果。

方法一:

#include<stdio.h>

int main(){

int i,j;

printf("请输入一个正整数。\n");

scanf("%d",&i);

if(i<2)

printf("小于2,请重新输入。\n");

elseif(i%2==0)

printf("%d不是一个素数。\n",i);

else{

for(j=2;j<=i/2;j++){

if(i%j==0){

printf("%d不是一个素数。\n",i);

break;

if(j>i/2){

printf("%d是一个素数。\n",i);

break;

方法二:

#include<stdio.h>

int main(){

int a=0;

int num=0;

scanf("%d",&num);

for(inti=2;i<num-1;i++){

if(num%i==0){

a++;

if(a==0){

printf("YES\n");

}else{

printf("NO\n");

方法三:

#include"stdio.h"

int main(){

printf("\t\t\t\t\thelloworld\n");

int a,i;

do{

printf("inputnumberjudgeprimenumber:\n");

scanf("%d",&a);

for(i=2;i<a;i++)

if(a%i==0)break;

if(i==a)

printf("%d是素数\n",a);

else

printf("%d不是素数\n",a);

}while(a!=0);

目的:判断一个数是否为素数

# include <stdioh>

int main(void)

{

int m;

int i;

scanf("%d",&m);

for(i = 2; i < m; i++)     //2到(m-1)的数去除m

{

if(m% i == 0)       // 判断能否整除

break;

}

if (i == m)

printf("YES!\n");

else

printf("No!\n");

}

for循环的功能:

①若能整除,通过break跳出函数;

②若一直到m-1都不能整除,此时i再自增1到m,不满足i < m跳出for循环,这时i = m。

扩展资料:

素数定理:

1、在一个大于1的数a和它的2倍之间(即区间(a, 2a]中)必存在至少一个素数。

2、存在任意长度的素数等差数列。

3、一个偶数可以写成两个合数之和,其中每一个合数都最多只有9个质因数。(挪威数学家布朗,1920年)。

4、一个偶数必定可以写成一个质数加上一个合成数,其中合数的因子个数有上界。(瑞尼,1948年)。

5、一个偶数必定可以写成一个质数加上一个最多由5个因子所组成的合成数。后来,有人简称这结果为 (1 + 5)(中国潘承洞,1968年)。

6、一个充分大偶数必定可以写成一个素数加上一个最多由2个质因子所组成的合成数。简称为 (1 + 2)。

参考资料来源:百度百科-质数

素数又称质数。所谓素数是指除了1和它本身以外,不能被任何整数整除的数。

该代码的基本思路为:如果m不能被2~它的平方根中的任一数整除,m必定是素数。

代码解析如下:

main()

{

intm; //输入的整数

inti; //循环次数

intk; //m的平方根

scanf(%d,&m);//输入m

k=sqrt(m);//对m开方赋给k

for(i=2;i<=k;i++)//从2到k依次加1循环

if(m%i==0)break;//当m可以整除i时,退出,不整除,说明是素数

if(i>=k+1)

printf(%disaprimenumber\n,m);//i不小于k+1时,m是素数,否则,m不是素数

else

printf(%disnotaprimenumber\n,m);

}

扩展资料:

判断素数的程序代码的另一思路:判断一个整数m是否是素数,只需把m被 2~m-1之间的每一个整数去除,如果都不能被整除,那么m就是一个素数。

代码及解析如下:

#include<stdioh>

intmain(){

inta=0; //素数的个数

intnum=0; //输入的整数

printf("输入一个整数:");

scanf("%d",&num);

for(inti=2;i<num;i++){

if(num%i==0){

a++; //素数个数加1

}

}

if(a==0){

printf("%d是素数。\n",num);

}else{

printf("%d不是素数。\n",num);

}

return0;

}

c语言判断素数的函数程序:

经分析,以上代码使用flag的值来判断输入的n是否为素数,flag=1,n为素数;flag=0,n不是素数。完善if条件语句,第一个if,主函数中的if调用函数,需要填入一个参数,即prime(n);第二个if,是判断什么情况下flag=0,即输入的整数不为素数,即(n/i==0),余数为0,可以整除;最后返回flag的值,returnflag

但是经过运行可以知道,n=4的时候,程序判断4是素数,明显是错误的,n取0和1的时候同理,程序存在漏洞。分析得知,在定义函数的过程中,for循环条件语句,i=0,如果为负整数,另加判断条件,略)

以上就是关于求判断素数的C语言程序全部的内容,包括:求判断素数的C语言程序、怎样用C++程序判断一个数是否为素数、怎么用C语言写出判断素数的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9336821.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存