对于一个不小于3的正整数,设计一个C程序完成判断该正整数是否是素数的功能

badboy_2222 2008-06-12 11:16:57
如题,请大侠们帮忙?
...全文
394 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
帅得不敢出门 2008-06-12
  • 打赏
  • 举报
回复
修正下
[Quote=引用 5 楼 zmlovelx 的回复:]
C/C++ code
int main()
{
int a,i;
scanf("%d",&a);

if (a<3)
{
printf("请输入不小于3的正整数\n");
return (0);
}
if(a%2==0){printf("no");return(0);}
int len = (int)sqrt(a)+1;//用平方根
for (i = 3;i<len;i+=2)
{
if(a%i==0) {printf("Not!");return(0);}
}
printf("Yes!");
}
[/Quote]
昆仑虎 2008-06-12
  • 打赏
  • 举报
回复

#include <stdio.h>

void main()
{
int n,i,j;
printf("input a integer(>=3)\n");
j=0;
do
{
if(j>0)
printf("error!\ninput a integer(>=3)\n");
scanf("%d",&n);
}
while(n<3);
for (i=2;i<=n/2;i++)
if (n%i==0)
printf("%d is not a prime number\n");
printf("%d is a prime number\n");
}
帅得不敢出门 2008-06-12
  • 打赏
  • 举报
回复

int main()
{
int a,i;
scanf("%d",&a);
if (a<3)
{
printf("请输入不小于3的正整数\n");
return (0);
}

int len = (int)sqrt(a)+1;//用平方根
for (i = 2;i<len;i+=2)
{
if(a%i==0) {printf("Not!");return(0);}
}
printf("Yes!");
}

coverallwangp 2008-06-12
  • 打赏
  • 举报
回复

#include <iostream.h>

int main()
{
int n;
cin>>n;

if (n<3)
{
cout<<"请输入不小于3的正整数"<<endl;
}

for (int i=2;i<=n/2;i++)
{
if (0==n%i)
{
cout<<n<<"不是素数"<<endl;
return 0;
}
}
cout<<n<<"是素数"<<endl;
return 0;
}
sukyin 2008-06-12
  • 打赏
  • 举报
回复


int main()
{
int a,i;
scanf("%d",&a);
if (a>2&&a%2==0) {printf("Not!");return(0);}
for (i = 3;i<a/2;i+=2){
if(a%i==0) {printf("Not!");return(0);}
}
printf("Yes!");
}
badboy_2222 2008-06-12
  • 打赏
  • 举报
回复
麻烦能给我代码吗?谢谢了
ouyh12345 2008-06-12
  • 打赏
  • 举报
回复 1
遍历
首先看是否能被2除
然后,看是否能被小于这个数的一半的奇数除
johnelf 2008-06-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 J_Factory 的回复:]
C/C++ code//用筛选法求<=M的素数
bool p[M+1];
void primesiev(int M)
{int i,i2,k,q;
q=sqrt(M);
for(i=0;i<=M;i+=2){ p[i]=0; } //p[i]=0 i非素数
for(i=1;i<=M;i+=2){ p[i]=1; } //p[i]=1 i是素数
p[2]=1;p[1]=0;
for(i=3;i<=q;i+=2)
{ if(p[i]==1)
{i2=i+i; k=i2+i;
while(k<=M)
{p[k]=0;k+=i2;}
}
}
}


这用筛法求小于M的素数,可以先预先把素数找好,在查…
[/Quote]
又见苹果....
Cocoky 2008-06-12
  • 打赏
  • 举报
回复
要效率高点,求平放根函数也自己写:)
J_Factory 2008-06-12
  • 打赏
  • 举报
回复
//用筛选法求<=M的素数 
bool p[M+1];
void primesiev(int M)
{int i,i2,k,q;
q=sqrt(M);
for(i=0;i<=M;i+=2){ p[i]=0; } //p[i]=0 i非素数
for(i=1;i<=M;i+=2){ p[i]=1; } //p[i]=1 i是素数
p[2]=1;p[1]=0;
for(i=3;i<=q;i+=2)
{ if(p[i]==1)
{i2=i+i; k=i2+i;
while(k<=M)
{p[k]=0;k+=i2;}
}
}
}
这用筛法求小于M的素数,可以先预先把素数找好,在查表。。。。

69,369

社区成员

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

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