c语言 (为什么结果会这样)

[复制链接]
查看11 | 回复5 | 2013-8-6 13:05:26 | 显示全部楼层 |阅读模式
主要是判断素数的函数有问题,先说下这个问题:你的判断素数的方法有问题,改了一下,仅供参考:int isprime(int i)//判断一个数是否为素数{if (i < 2)// 小于2的不是素数.{return 0;}if (i == 2)// 2是最小的素数.{return 1;}for(int n=2;n*n<=i;n++){if( i%n == 0 )// 整数求余,若能除尽则该数不是素数{return 0;}} //返回值0return 1; //素数,返回值1}你的代码中主要错误是: 判断不是素数后,return 0返回,需要在if中,用大括号括起来!至于main中的实现,不知道题...
回复

使用道具 举报

千问 | 2013-8-6 13:05:26 | 显示全部楼层
/* 50 =3 + 47 50 =7 + 43 50 = 13 + 37 50 = 19 + 31 52 =5 + 47 52 = 11 + 41 52 = 23 + 29 54 =7 + 47 54 = 11 + 43 54 = 13 + 41 54 = 17 + 37 54 = 23 + 31 56 =3 ...
回复

使用道具 举报

千问 | 2013-8-6 13:05:26 | 显示全部楼层
for(int found=0,int c=3;c<m/2&& !found;c+=2)
你后面found=1后
for为一直假了...
回复

使用道具 举报

千问 | 2013-8-6 13:05:26 | 显示全部楼层
isprime函数有问题,return 0; 永远会被执行,所以无法用来判断是否是素数...
回复

使用道具 举报

千问 | 2013-8-6 13:05:26 | 显示全部楼层
哇!来晚了一步,正在给你看代码中...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行