新手小题目,请教错误

ylwork 2012-06-24 10:26:30
原题是写一个函数prime(int x),如果是素数,返回1,否则返回0;并用主函数进行验证



# include <stdio.h>

int prime (int x) /*定义prime()*/
{
int n;
for (n=2;x%n!=0;n++) /*直到x除以n的余数为0的时候结束循环*/
; /*缺省的循环体语句*/
if(n<x) return (1); /*如果x是素数,返回数值1*/
else return (0); /*如果x不是素数,返回数值0*/

}

main()
{
int x,n;
scanf("%d",x);
for(n=2;x%n!=0;n++) /*直到x除以n的余数为0的时候结束循环*/
; /*缺省*/
if prime (x)==(n<x) /*调用函数prime(),如果prime(x)的值和n<x的值相等*/
printf("验证成功\n\n");
else
printf("验证不成功");

}
...全文
113 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
typedef_god 2012-06-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

C/C++ code

int prime (int x) /*定义prime()*/
{
int n;
for (n=2;n<=sqrt(x);n++) /*直到x除以n的余数为0的时候结束循环*/
if(x%n==0)
break;
if(n>sqrt(x)) return (0); /*如果x不是素数,返回数值0*/
else return (1); /*如果x是素数,返回数值1*/
……
[/Quote]
++
ProgrammingRing 2012-06-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

C/C++ code

int prime (int x) /*定义prime()*/
{
int n;
for (n=2;n<=sqrt(x);n++) /*直到x除以n的余数为0的时候结束循环*/
if(x%n==0)
break;
if(n>sqrt(x)) return (0); /*如果x不是素数,返回数值0*/
else return (1); /*如果x是素数,返回数值1*/
……
[/Quote]
Make++
W170532934 2012-06-24
  • 打赏
  • 举报
回复

int prime (int x) /*定义prime()*/
{
int n;
for (n=2;n<=sqrt(x);n++) /*直到x除以n的余数为0的时候结束循环*/
if(x%n==0)
break;
if(n>sqrt(x)) return (0); /*如果x不是素数,返回数值0*/
else return (1); /*如果x是素数,返回数值1*/

}
ylwork 2012-06-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

主函数也有错,scanf()少了取地址符&
[/Quote]



您真是太细心了,我作为一个新手对您的景仰如滔滔***,调试了半天被您一语道破天机,原来寄这样一个错误,我想拜您为师,顺便能不能帮我解释一下二三楼n<=sqrt是什么道理,我很纳闷
tiantiant1 2012-06-24
  • 打赏
  • 举报
回复
主函数也有错,scanf()少了取地址符&
ylwork 2012-06-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

当你在for循环里面x%n!=0这个条件,当不成立的时候n就已经等于X了,然后你再判断if prime (x)==(n<x)这句话就有问题了吧!
[/Quote]


当不成立的时候n=x,则prime (x)==(n<x)==0;不知道我这个思路对不对,感谢您再次指点
ylwork 2012-06-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

引用 1 楼 的回复:

C/C++ code

int prime (int x) /*定义prime()*/
{
int n;
for (n=2;n<=sqrt(x);n++) /*直到x除以n的余数为0的时候结束循环*/
if(x%n==0)
break;
if(n>sqrt(x)) return (0); /*如果x不是素数,返回数值0*/
else return……
[/Quote]

n<=x 的算术平方根是什么思想呢,求指点
ylwork 2012-06-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

引用 1 楼 的回复:

C/C++ code

int prime (int x) /*定义prime()*/
{
int n;
for (n=2;n<=sqrt(x);n++) /*直到x除以n的余数为0的时候结束循环*/
if(x%n==0)
break;
if(n>sqrt(x)) return (0); /*如果x不是素数,返回数值0*/
else return……



[/Quote]
n<==sqrt(x); 为什么用n<=x的平方根作为循环条件呢 ,不解,求指点


yujunyao0811 2012-06-24
  • 打赏
  • 举报
回复
当你在for循环里面x%n!=0这个条件,当不成立的时候n就已经等于X了,然后你再判断if prime (x)==(n<x)这句话就有问题了吧!

69,382

社区成员

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

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