判断一个整数是否为素数的函数 C++程序

fql0322 2011-04-24 06:40:59
编写判断一个整数是否为素数的函数
...全文
1784 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Freedom 2011-04-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 pathuang68 的回复:]
C/C++ code

#include <stdio.h>
#include <math.h>

bool isPrime(int number)
{
int i;
int k;
k=(int)sqrt((double)number);
for(i = 2; i <= k; i++)
if(number%i==0) br……
[/Quote]
++1
huer0625 2011-04-24
  • 打赏
  • 举报
回复
lz,可以看这个帖子,我在这个帖子回答了。
http://topic.csdn.net/u/20110414/10/b9506f6c-1c58-4f3b-a0fb-2397d2151b08.html
pathuang68 2011-04-24
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <math.h>

bool isPrime(int number)
{
int i;
int k;
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(int argc, char* argv[])
{
int number = 0;
printf("Please enter an integer:\n");

scanf("%d", &number);
if(isPrime(number))
{
printf("%d is a prime.\n", number);
}
else
{
printf("%d is not a prime.\n", number);
}
}
JK0803_zhouli 2011-04-24
  • 打赏
  • 举报
回复
#include "stdio.h"
#include "math.h"
main(){
int m,n;
int flag=0;
printf("请输入一个整数:\n");
scanf("%d",&n);
m=sqrt(n);
for(int i=2;i<=m;i++)
if(n%i==0)
flag=1;
if(flag)
printf("%d不是素数\n",n);
else
printf("%d是素数\n",n);
}
warren258 2011-04-24
  • 打赏
  • 举报
回复
上面的可以说都是穷举法,如果你要判断的数很大的话,就要用到miller-robin算法。
科比布莱恩特 2011-04-24
  • 打赏
  • 举报
回复
2楼那个函数也太长了吧。这样写时间复杂度也太大了吧。

楼上的朋友写的不错,建议楼主你参考一下。我就不写了,和他的程序类似。
枫继续吹 2011-04-24
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;
void swaptwo(int &a,int &b)
{
int t=a;
a=b;
b=t;
}
int main()
{
for (int i=1;i<100;i++)
{
int counter=0;
for (int j=2;j<i;j++)
{
if ((i%j)==0)
counter++;
}
if (counter==0)
cout << i << endl;
}
return 0;
}

fukang258369 2011-04-24
  • 打赏
  • 举报
回复
int IfIsPrime(int n)
{
if(n<=1)
return 0;
if(n==2)
return 1;
else
{
for(int i=2;i<=sqrt(double(n));i++)
if(n%i==0)
return 0;
return 1;
}
}
返回1就是素数,返回0不是素数。
虽然我也是新手。但我要给你点儿建议。只有自己动手,才能会。
淡蓝 2011-04-24
  • 打赏
  • 举报
回复
 #include<iostream>
  #include<cmath>
  using namespace std;
  bool prime( int num)
  {
  if (num==2||num==3||num==5) return true;
  unsigned long c=7;
  if (num%2==0||num%3==0||num%5==0||num==1) return false;
  int maxc=int(sqrt(num));
  while (c<=maxc)
  {
  if (num%c==0) return false;
  c+=4;
  if (num%c==0) return false;
  c+=2;
  if (num%c==0) return false;
  c+=4;
  if (num%c==0) return false;
  c+=2;
  if (num%c==0) return false;
  c+=4;
  if (num%c==0) return false;
  c+=6;
  if (num%c==0) return false;
  c+=2;
  if (num%c==0) return false;
  c+=6;
  }
  return true;
  }
  int main()
  {
  int num;
  cin>>num;
  if (prime(num)) cout<<num<<" is a prime number."<<endl;
  else cout<<num<<" is not a prime number."<<endl;
  return 0;
  }

65,189

社区成员

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

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