输入一个数,输出一个小于它的最大素数.如何做?

wangdingfeng 2010-10-09 11:21:25
求解,在线等待.
...全文
805 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dooX8086 2010-10-10
  • 打赏
  • 举报
回复
也就是求素数


//用到 sqrt 函数,需添加 math.h 头文件


int getMax(int n)
{
int j=1;

for (j = n - 1; j > 1; --j)
{
int i=2;
float qr = sqrt(j);

for(; i < qr; ++i)
{
if (0 == j % i) break;
}

if (i > qr) break;

}

return j;
}
beexie 2010-10-10
  • 打赏
  • 举报
回复
效率不高的一段程序:
#include <stdio.h>
int maxprime(int N);
void main()
{
printf("%d\n",maxprime(8));
}
int isprime(int num)
{
int m,flg;
flg = 1;
m = num-1;
while(m>1)
{
if(0 == num%m)
break;
m--;
}
if (m>1)
flg = 0;
return flg;
}
int maxprime(int N)
{
int prime;
prime = N-1;
while(prime>1)
{
if(isprime(prime))
break;
prime--;
}
return prime;
}
xiaoyuer5222 2010-10-10
  • 打赏
  • 举报
回复

给段简单的你参考下
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc,char**argv)
{
int n;
int i;
int m;
while (1)
{
printf("input a prime number:");
scanf("%d",&n);
while(getchar() != '\n');
m = n - 1;
while(m)
{
if (isPrime(m))
{
printf("the max prime number less than %d is %d\n",n,m);
break;
}
m--;
}
}
return 0;
}
int isPrime(int n)
{
int i;
for (i=2; i<n; i++)
{
if (n % i == 0)
{
return 0;
}
}
return 1;
}

「已注销」 2010-10-09
  • 打赏
  • 举报
回复
能给段代码看看吗?
tangxianghenggood 2010-10-09
  • 打赏
  • 举报
回复
首先求1到这个数之间的素数,保存在数组中,然后输出最后一个即可,这个是比较笨的方法,但还是可以解决你的问题的

另外可以这样 :你输入一个数,然后把这个数做减减操作,在判断是否是素数,是的话打印 在break 这样相对来说效率搞一些
希望对你有所帮助

69,371

社区成员

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

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