怎么判断素数?

afanti1230 2004-04-16 07:02:55
怎么判断素数?
如果输入一个数n,怎么把从3到n的全部素数输出?
...全文
3682 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
盛夏 2010-05-29
  • 打赏
  • 举报
回复
SQRT的程序都不对,SQRT不识别9。。。。
9虽然不是素数,但是在以SQRT为条件判断出是素数
lei601 2004-04-16
  • 打赏
  • 举报
回复
接上面的
# include "dd.h"
using namespace std;

int main()
{
int i,j;
cout<<"请输入你要打印素数的起始端:";
cin>>i;
cout<<"请输入你要打印素数的结束端:";
cin>>j;
for(int k=i;k<=j;k++)
{ if (sushu(k))
cout<<k<<" ";
}
system("pause");
return 0;
}
lei601 2004-04-16
  • 打赏
  • 举报
回复

bool sushu( int i)
{ if (i==1||i==2)
return true;
else
{ for ( int j=i-1;j>1;j--)
{ if(i%j==0)
return false;
else
if (i%j!=0&&j==2)
return true;
}
}
freefalcon 2004-04-16
  • 打赏
  • 举报
回复
对于求一个较大范围内的素数,楼上的筛选法是一种很高效的方法
yiana1002 2004-04-16
  • 打赏
  • 举报
回复
编译环境
dev c++
yiana1002 2004-04-16
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<stdlib.h>//需要包含的头文件
/*
#define MAX 1000
main()
{int i,n,k,m;
int s[MAX]; /*定义筛子*/
printf("please input the n:");
scanf("%d",&n); /*最大范围*/
if (n>1){
for(i=2;i<=n;i++)
s[i]=1; /*筛子初始化*/
m=2;
while(m<=n){
if (s[m]==1){ /*判定最小数为素数*/
printf("%d\t",m);
k=m;
while(k<=n){ /*移走素数的倍数*/
s[k]=0;
k=k+m;
}
}
m++;
}
} */
system("pause"); //暂停语句
}

liuhaiyi 2004-04-16
  • 打赏
  • 举报
回复
#include <iostream.h>
#include <math.h>
void main(void)
{
int m,i,k;
cin>>m;
k=sqrt(m);
for(i=2;i<=k;i++)
{
if(m%i==0)
{
break;
}
}

if(i>k)
{
cout<<"This is a prime number"<<endl;
}
else
{
cout<<"This is not a prime number"<<endl;
}
}
fansy007 2004-04-16
  • 打赏
  • 举报
回复

bool IsPrimer(int n)
{
int m=sqrt(n);
for(int i=2;i<=m;i++)
{
if(n%i==0) return false;
}
return true;
}

就这样写最好了,再快可以用筛选法(谭浩强好像有),你判断个素数也写那么多,有我的风采!

afanti1230 2004-04-16
  • 打赏
  • 举报
回复
//这个程序是求素数
#include <iostream>
#include <conio.h>
#include <iomanip>
#include <cmath>
using namespace std;

void main()
{long n;
cout<<"enter integer n:"<<endl;
cin>>n;

while (true)
{
if (n<2) cout<<n<<"is not prime."<<endl;
else if (n<4) cout<<n<<"is prime."<<endl;
else if(n%2==0) cout<<n<<"=2*"<<n/2<<" is not prime."<<endl;
else {for(int d=3;d<=n/2;d+=2)
if(n%d==0) {cout<<n<<"="<<d<<"*"<<n/d<<endl;
cout<<n<<"is not prime."<<endl;exit(0);}
//程序运行到这里时,如果输入的数不是素数,就会退出,我该怎么才能让它继续对以下的数进行判断??
cout<<n<<"is prime."<<endl;
}

cout<<"enter integer n:"<<endl<<endl;
cin>>n;
}
getch();
}


zhouqingyuan 2004-04-16
  • 打赏
  • 举报
回复
bool IsPrimer(int n)
{
int m=sqrt(n);
for(int i=2;i<=m;i++)
{
if(n%i==0) return false;
}
return true;
}
liuxin625823 2004-04-16
  • 打赏
  • 举报
回复
long ssu(long x)
{long i,j;
j=sqrt(x);
for(i=0;i<=k;i++)
if(x%i==0) break;
if(i>=k+1) printf("%ld是素数",x);
}
liuxin625823 2004-04-16
  • 打赏
  • 举报
回复
long ssu(long x)
5420 2004-04-16
  • 打赏
  • 举报
回复
n除以从3到n的平均根,如果不能整除则为
purldmz 2004-04-16
  • 打赏
  • 举报
回复
有很多种方法呀,最简单但是效率比较底的一种就是对n从2到n-1求余,如果全部不等于零,那就是素数了

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧