大家帮忙编一个小程序,判断一个数是否为素数?

boboisjinbo 2003-08-20 05:46:02
大家帮忙编一个小程序,判断一个数是否为素数?
...全文
1881 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
playboyxp 2003-08-22
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <math.h>
main()
{
int x,i,m;
float k;
scanf("%d",&x)
k=sqrt(x);
for(m=2;m<=k;m++)
if (x%m==0) break;
if (m>k) printf("%d is 质数\n",x);
else printf("%d is not 质数\n",x);
}
nianll 2003-08-21
  • 打赏
  • 举报
回复
呵呵:) pow返回值好像是double 要把它转回int
Jinhao 2003-08-21
  • 打赏
  • 举报
回复
mark
nianll 2003-08-21
  • 打赏
  • 举报
回复
可以试用费尔马小定理

如果m是素数 a 的m-1次方 摸m 等 1

BOOL test(int m)
{
if( m = 2 || m = 3 || m = 5)
return true;
if((1 == pow(2, m-1) % m) && (1 == pow(3, m-1) % m) && (1 == pow(5, m-1) % m))
return true;
return false;
}
Goldbach 2003-08-21
  • 打赏
  • 举报
回复
dama2003(大马) ( )
ccwwbb 2003-08-21
  • 打赏
  • 举报
回复
#include<iostream.h>
#include<math.h>
void main()
{
long m;
cout<<"please input a number:\n";
cin>>m;
double sqrtm=sqrt(m);
int i;
for(i=2;i<=sqrtm;i++)
if(m%i==0)
break;
if(sqrtm<i)
cout<<m<<" is prime.\n";
else
cout<<m<<" isn't prime.\n";
}

在bcb6中编译通过
dama2003 2003-08-21
  • 打赏
  • 举报
回复
我来个详细的
#include "math.h"
main()
{
int m,i,k;
scanf("%d",&m);//输入判断的数据
k=sqrt(m); //定义k等于输入数据的平方根
for(i=2;i<=k;i++)
if(m%i==0) break;
if(i>k+1) printf("%d is a prime number\n",m);
else printf("%d is not a prime number\n",m);
}//这里首先让m被2到sqrt(m)除,如果m能被这之间的任何一个数据整除的话,
提前结束循环,此时i必然小于k,如果m不能被这之间的所有数整除,则完成最后一次循环以后,
i还要循环一次,此时的i=k+1,所以此时判断i的值就可以了,如果i大于或者等于k+1,则表示
m没有被整除过,输出“是素数”.
Dragon132 2003-08-21
  • 打赏
  • 举报
回复
一个完整的程序

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

int prime(int m)
{
int i;
for(i=2;i<sqrt(m);i++)
if(m%i==0)
return 0;
return 1;
}

main()
{
int n;
printf("Please a number to test:");
scanf("%d",&n);
if(prime(n))
printf("%d is a prime!\n",n);
else
printf("%d is not a prime!\n",n);
}
jnqx 2003-08-20
  • 打赏
  • 举报
回复
不好意思。没看懂。
能解释一下吗?多谢!
(一个真正的菜鸟)
Wolf0403 2003-08-20
  • 打赏
  • 举报
回复
int ChkPrime(double Eingabe){

double factor1 = 0;
double factor2 = 2;
double Ergebnis = 0;

while (Eingabe <= 0)
{
Return_State = 2;
}

do{
factor1=1;

while (factor1 < Eingabe && factor2 < Eingabe && Ergebnis != Eingabe)
{
factor1++;
Ergebnis=(factor1 * factor2);
}
if (Ergebnis==Eingabe)
{
Return_State = 0;
else
factor2++;
}
while (factor2 < Eingabe);
return ReturnChkPrime(1);
}

数字不合适,返回 2
是质数,返回 1
是合数,返回 0
改自一个不知道法国还是德国人的代码,变量名没改:)
chon81 2003-08-20
  • 打赏
  • 举报
回复
#include "stdio.h"
#include "conio.h"
#include "math.h"

int s(int n)
{
int i=2;
if(n==2) return 1;
while(n%i)
if(i>sqrt(n)) i++;
else return 1;
return 0;
}

main()
{
int n;
scanf("%i",&n);
printf("%d is ",n);
if(s(n)) printf("yes");
else printf("no");
getch();
}
tonybaobao 2003-08-20
  • 打赏
  • 举报
回复
#include <iostream>
#include <cmath>
using namespace std;//可能需要
void main()
{
int i,n;
cin>>n;
for(i=2;i<=sqrt(n);)
{
if( !(n%i) )
{
cout<<"不是素数\n";
return;
}
else i++;
}
cout<<"是素数\n";
}
oopig 2003-08-20
  • 打赏
  • 举报
回复
//如果是素数返回1,否则0。要求num是正整数。
int is_prime(int num)
{
int prime = 1;
for (int i = 2; i <= num / 2; i++)
{
if (num % i == 0)
{
prime = 0;
break;
}
}
return prime;
}
pzeping2003 2003-08-20
  • 打赏
  • 举报
回复
#include<iostream>
int sushu(ing a)
{
int b=sqrt(a);
for(int i=2;i<=b;i++)
{
if(a%i==0)
return 1;
else
return 2;
}
}
int main()
{
int ifsushu=97;
switch(sushu(ifsushu))
{
case 1:
cout<<ifsushu<<"是素数";
case 2:
cout<<ifsushu<<"不是素数";
defaule:
cout<<"输入错误";
}
}
Jinhao 2003-08-20
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;

bool ShiBuShiSuShu(int a)
{
int i=2;
if(a==1) return true;
if(a%2==0&&a!=2) return false;
while(1)
{
if(a%i==0) return false;
if(++i==a) return true;
}
}

int main()
{
switch(ShiBuShiSuShu(15))
{
case false: cout<<"不是叔叔";break;
case true: cout<<"是叔叔";break;
}
}
bmj 2003-08-20
  • 打赏
  • 举报
回复
程序如下:
#include <math.h>
#include <iostream.h>
main()
{
int m,i,k;
cout<<"enter the number:";
cin>>m;
k=sqrt(m+1);
for(i=2;i<=k;i++)
{
if(m%i==0)
break;
if(i>=k+1)
cout<<m<<" is a prime number!";
else
cout<<m<<" is not a prime number!";
return 0;
}
应该很容易看懂的,我就不注释了!自己看吧
Jinhao 2003-08-20
  • 打赏
  • 举报
回复
写错了,哈哈
Jinhao 2003-08-20
  • 打赏
  • 举报
回复
很复杂的哟
#include<iostream>
bool ShiBuShiSuShu(int a)
{
if(a==2) return true;
if(a%4==1||a%4==3) return true;
return false;
}

int main()
{
switch(ShiBuShiSuShu(15))
{
case false: cout<<"不是叔叔";
case true: cout<<"是叔叔";
}
}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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