c++函数求质数。要求 输入5个数,选择出那几个是质数的程序。本人新手,希望大虾帮忙。在线等。。。。3Q

c++函数求质数。要求 输入5个数,选择出那几个是质数的程序。本人新手,希望大虾帮忙。在线等。。。。3Q,第1张

#include<iostream>

using namespace std;

bool IsPrimeNum(int n); //判断自然数n 是否是质数

const int max = 5 ; //表示数组的元素个数的最大值

int main()

{

int a[max]; // 定义一个有max个元素的数组

int i;

cout<<"请输入"<<max<<"个自然数:"<<endl;

for(i=0;i<max;i++)

{

cin>>a[i]; //输入max个数据

}

cout<<"输入的数据中为质数的有:"<<endl;

for(i=0;i<max;i++)

{

if(IsPrimeNum(a[i])) //如果是质数

{

cout<<a[i]<<endl;

}

}

return 0;

}

bool IsPrimeNum(int n) //判断自然数n 是否是质数

{

int i;

bool flag = true; //质数标志,ture为质数

if(n < 2) //0 和 1 既不是质数也不是合数

{

flag = false;

}

else

{

for(i = 2; i < n; i++) // 此处求质数方法可以改进

{

if(n%i == 0)

{

flag = false; //检测到不是质数则退出for循环

break;

}

}

}

return flag; //返回是否是质数的标志

}

测试结果为:

请输入5个自然数:

2 3 4 5 7

输入的数据中为质数的有:

2

3

5

7

Press any key to continue

可用筛法求出

筛法是一种高效求质数的方法,是由希腊数学家埃拉托色尼首先提出的

1将所有候选数(此题中为2到1000)放入筛中

2找出筛中的最小数min,min必定为质数

3把min放入质数集合中,然后将他的所有倍数从筛中筛去

4重复2-3,直到筛空

#include<stdioh>

int main()

{

int a[22],i,j;

for(i=0;i<20;i++)

scanf("%d",&a[i]);

i=0;

while(i<20)

{

for(j=2;j<=a[i]/2;j++)

if(a[i]%j==0)

break;

if(j>a[i]/2&&a[i]!=1)

printf("%-3d",a[i]);

i++;

}

printf("\n");

return 0;

}

如果这个程序只处理一对数据的话,用一个循环,一个数一个数地判断。如果说要一次判断多组数据,并且知道这些数据地范围的话,可以先把这个范围里面的所有素数保存起来,然后对每一组数据,都在这个数组中查找满足条件的所有数。这样的话就只用找一次素数,后面的都是查找的问题,应该效率高一点吧

#include<stdioh>

#include<stdlibh>

int p[1230];

bool IsP(int n)

{

int i = 2;

while(i < n / 2)

{

if(n % i == 0)

return false;

i++;

}

return true;

}

int main()

{

int i = 2;

int count = 0;

for(;i < 10000;i++)

{

if(IsP(i))

p[count++] = i;;

}

int n,m;

printf("请输入两个整数,(第一个数比第二个数小)以-1结束:\n");

scanf("%d",&n);

while(n != -1)

{

scanf("%d",&m);

i = n;

count = 0;

while(p[count++] < n);

while(p[count] <= m)

{

printf("%d\n",p[count]);

count ++;

}

scanf("%d",&n);

}

system("pause");

return 0;

}

这是我的代码,可以运行,我只考虑了2到10000之间的素数

以上就是关于c++函数求质数。要求 输入5个数,选择出那几个是质数的程序。本人新手,希望大虾帮忙。在线等。。。。3Q全部的内容,包括:c++函数求质数。要求 输入5个数,选择出那几个是质数的程序。本人新手,希望大虾帮忙。在线等。。。。3Q、编写程序求出1000以内的所有质数、输入20个数到一个数组中,找出其中的质数.写出程序过程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存