按从小到大输出m和n之间的素数,逗号间隔,如果之间没有素数,则输出NO
下面是我的一个实现,供参考:
#include <stdio.h>
int main(void){
int m,n;
scanf("%d %d",&m,&n);
int temp;
if(m<0){
m=2;
}
if(n<0){
n=2;
}
if(n<m){
temp = m;
m=n;
n=temp;
}
// printf("m=%d,n=%d\n",m,n);
int i,j;
int prime=1;
int havePrime = 0;
for(i=m;i<=n;i++){
for(j=2;j<i-1;j++){
if(i%j==0){
prime=0;
// printf("prime=%d,i=%d,j=%d\n",prime,i,j);
break;
}
}
if(prime==1&&i>1){
printf("%d,",i);
havePrime=1;
}
prime=1;
}
if(havePrime==0){
printf("NO");
}
return 0;
}
#include <QCoreApplication>
#include <iostream>
#include <math.h>
using namespace std;
bool isPrime(int number)
{
int i; // 循环次数
int k; // m 的平方根
k=(int)sqrt( (double)number );
for(i=2;i<=k;i++)
if(number%i==0)
break;
if(i>k)
return true;
else
return false;
}
int main()
{
vector<int> preCount;
int max,min;
cout<<"Please inPut min";
cin>>min;
cout<<"Please inPut max";
cin>>max;
if(min>max)
{
return 0;
}
else
{
bool ispre=false;
for(int i=min;i<=max;++i)
{
ispre=isPrime(i);
if(ispre)
{
preCount.push_back(i);
}
}
}
if(0==preCount.size())
{
cout<<"No"<<endl;
}
else
{
for(int i=0;i<preCount.size();++i)
{
cout<<" "<<preCount[i];
}
cout<<endl;
}
}
#include <stdio.h>
int f(int n)
{
if(n==2) return 1;
for(int j=2;j*j<=n;j++)
{
if(n%j==0) return 0;
}
return 1;
}
int main()
{
int m,n,flag=0;
scanf("%d%d",&m,&n);
for(int j=m;j<=n;j++)
if(f(j)==1)
{
printf("%d ",j);
flag++;
}
if(flag==0)
printf("NO");
return 0;
}
素数筛选使用了埃氏筛法
#include <iostream>
#include <string>
using namespace std;
int main()
{
int m = 1, n = 10;
cout << "please input m = ";
cin >> m;
cout << "please input n = ";
cin >> n;
if (m > n){
int temp = n;
n = m;
m = temp;
}
bool* nums = new bool[n + 1];
memset(nums, true, n + 1);
nums[0] = false;
//素数计算-埃氏筛法
for (int i = 2; i <= n; ++i) {
if (nums[i] == false) {
continue;
}
for (int j = i + i; j <= n; j += i) {
nums[j] = false;
}
}
//判断
int count = 0;
for (int i = m; i < n; ++i) {
if (nums[i] == true){
if (count != 0){
cout << ",";
}
cout << i;
++count;
}
}
if (count == 0){
cout << "NO";
}
cout << endl;
//delete[] nums;
system("pause");
return 0;
}