c++求任意两个数之间的所有素数

如题所述

【解题思路】
本题的重点在如何判断一个数是否素数。判断素数的唯一标准就是能不能被除了1和本身之外的其它数整除,可以通过循环来判断,比如要判断27是否素数,可以用一个循环,从2开始到26逐个检测,看27能否被其中某个数整除,如果能就不是素数,否则就是素数。判断一个数是否被另一个数整除可以用取余运算符%,比如:a%b==0(就是a除以b的余数等于0),就可以判定a可以被b整除。针对本题,为了使代码更简洁,可以专门写个判断一个数是否素数的函数,然后在主函数中调用就可以很容易实现求任意两个数之间的所有素数的要求。具体代码如下:

【程序代码】
#include <iostream>            //控制台操作头文件
#include <math.h>              //数学函数头文件
 
int SS(int a)                  //质数判断函数(质数返回1,否则0)
{if(a<2) return 0;             //小于2的数都不是质数,返回0
 if(a==2) return 1;            //2是特殊的质数 
 int i,n=(int)sqrt(a);         //n是除数,开方可以减少检测个数 
 for(i=2;i<=n;i++)             //逐个检测能不能被整除 
     if(a%i==0) return 0;      //如果能被整除说明不是质数, 返回0; 
 return 1;}                    //检测完了还没可以被整除的数,返回1 
 
int main()                     //主函数
{int i,a,b;                    //循环变量和任意两个数
 printf("请输入起点:");       //显示提示信息
 scanf("%d",&a);               //输入起点数值
 printf("请输入终点:");       //显示提示信息
 scanf("%d",&b);               //输入终点数值
 printf("%d-%d之间的素质有:",a,b); //显示提示信息
 for(i=a;i<=b;i++)             //用循环逐个找出[a-b]之间的素数 
     if(SS(i)) printf("%d ",i);//如果是素数则输出
 printf("\n");                 //换行 
 system("PAUSE");              //屏幕暂停,以便看到显示结果
 return 0;}                    //结束程序

【运行结果】
本程序在 DEV C++上运行通过,截图如下:

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-05-09
#include <iostream>
using namespace std;bool isPrime(int num){
for (int i=2; i<num; i++){
if (num%i == 0){
return false;
}
}
return true;
}int main(){
int counter = 0;int a,b;cin>>a>>b;
cout<<"素数为:"<<endl;
for (int i=a; i<=b; i++){
if (isPrime(i)){
cout<<i<<" ";
counter++;
}
}
cout<<endl<<"共"<<counter<<"个"<<endl;
return 0;
}
第2个回答  2013-05-09
我的程序源代码截图如下:结果截屏如下;(两个整数是我随便输入的,你也可以改动)

c++求任意两个数之间的所有素数
判断一个数是否被另一个数整除可以用取余运算符%,比如:a%b==0(就是a除以b的余数等于0),就可以判定a可以被b整除。针对本题,为了使代码更简洁,可以专门写个判断一个数是否素数的函数,然后在主函数中调用就可以很容易实现求任意两个数之间的所有素数的要求。具体代码如下:【程序代码】#include...

c++输入两个素数,求介于两者之间素数的个数
int cnt = 0; \/\/ 记录素数个数 cout << "请输入两个素数,中间用空格隔开:" << endl;cin >> num1 >> num2;cout << num1 << "和" << num2 << "之间的素数有:" << endl;for (int i = num1 + 1; i < num2; i++) { if (isPrime(i)) { cout << i << " ...

用C++输出两个正整数[m,n]之间所有的素数,每行输出5个数
k=sqrt(i);for(j=2;j<=k;j++)if(i%j==0){ leap=0;break;} if(leap){ printf("%-4d",i);h++;if(h%5==0)printf("\\n");} leap=1;} printf("\\nThe total is d.",h);}

c++看不懂:求a~b段内所有素数
比如,要找出100以内的所有素数,首先设定一个范围,从2到100,然后针对这个范围内的每一个数,从2开始逐一进行除法判断。若某数在除以2到其平方根之间的任何一个数时都没有余数,则该数不是素数,否则它就是素数。在实际应用中,这种方法主要体现在编程中,特别是在C++语言中。编程人员可以利用此方法...

c语言编程,输出10~100之间的全部素数
{ for(b=2;b

C++ ,键盘输入正整数N,输出2~N间的所有素数,以及素数个数,_百度知 ...
void){ int n,i,j,sum=1,flag;cin >> n;cout << 2 << ' ';for(i=3;i<=n;i+=2){ for(flag=j=3;j*j<=i;j+=2)if(!(i%j)){ flag=0;break;} if(flag){ cout << i << ' ';sum++;} } cout << "\\nA total of " << sum << " prime(s).\\n";} ...

给你两个整数a,b ,求[a,b] 区间内素数的个数c++(大区间)
include <stdioh> include <math.h> void main(){ int a,b,i,n=0;printf("请输入a和b的值:");scanf("%d %d",&a,&b);for(i=a;i<=b;i++){ for(j=2;j<=sqrt(i);j++)if(i%j==0)break;if(j>sqrt(i))n++;} printf("[%d,%d]之间的素数个数有%d\\n",a,b,n);}...

c++ for循环 输入两个整数X和Y,输出两者之间的素数个数(包括X和Y)。
如果你原来那样,循环次数太多了,不要用j<=data\/2,如果非要用,可以用 j<data\/2 { if(data % j==0) { flag=false; break; } } if(flag && i!=1) { ans ++; } } cout<<ans; return 0; } ...

用c++编译 输出[m,n]间所有素数,并且每5个换行,如果区间内不存在素数...
void prime(int a,int b) \/\/输出素数的函数 { int i;int n = int(sqrt(a));for(i = 2;i <= n;i++) \/\/只要2~根号a的数都不被a整除,就是素数 { if(a%i == 0)break;} if(i > n)cout<<a<<" ";a++;if(a > b)exit(0); \/\/到达b后退出函数 prime(a,b)...

c++ 求输入m和n,输出m到n间的所有素数。
include<iostream> using namespace std;int main(){ int i,j,m,n;cin>>m>>n; \/\/假定m<=n 且m>1 因为1既不是素数也不是合数 for(i=m;i<=n;i++){ for(j=2;j<=i\/2;j++)if(i%j == 0) break;if(j>i\/2) cout<<i<<endl;} \/\/return 1;system("pause");} ...

相似回答