鱼C论坛

 找回密码
 立即注册
查看: 3793|回复: 13

我还不懂,还是不懂。

[复制链接]
发表于 2011-11-3 19:28:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>

void main()

{
   int a, b, c;
   printf("input a number\n");
   scanf("%d", &a);              
   c = sqrt(a);                                      求解1:输入a,单步调试后,a的开根值为639.。???
   for(b = 2; b <= c; b++)                             
   {
           if(a % c == 0)                         求解2;这个循环里面c=639.。。b要循环到b=639才会跳出。
           {
                   break;
           }
   }
   if(b > c)                                                求解3; 这时这个b也是639,c也是639.。表达式不成立。
           printf("%d is a prime number\n", a);       打印下面的eles,这个不是素数。。        
   else
           printf("%d is not a prime number\n", a);   但是我输入的101应该是个素数啊。。

}                                                                     求大侠们救救我,想了6个小时了
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-11-3 19:35:02 | 显示全部楼层
你用sqrt函数
就少了一个库函数#include<math.h>
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-11-3 20:17:39 | 显示全部楼层
if(a % c == 0)    确定是a%c?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-11-3 23:22:47 | 显示全部楼层
题意是什么?某个数是不是素数的问题?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-11-4 08:38:57 | 显示全部楼层
:o哪里还是不懂呢?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-11-4 08:56:20 | 显示全部楼层
你这个是求输入一个数是不是素数的对吧,求素数和开方有啥关系啊?为什么IF语句要用BREAK跳出呢,很明显有大大的问题
#include <stdio.h>
int sushu(int n)//定义一个判定素数的函数
{
int p=1;/* 先假设p的值是1,即先认为n是素数*/
for(i=2;i<n;i++)
if(n%i==0)
/* n除以i取余数,如果余数等于0,那不是n能被i整除吗?*/
p=0;
/* 如果n被整除了,则n就不是素数,令p等于0,即我们的假设不对。*/
return p;
// 返回p的值
}
void main()
{
int n;
printf("请输入一个数:");
scanf("%d",&n);
if(sushu(n))
printf("您输入的数是素数!\n");
else
printf("您输入的不是素数!/n");
}
}
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-11-4 10:05:12 | 显示全部楼层

开方和if跳出都是优化算法的啊
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-11-4 22:16:57 | 显示全部楼层
本帖最后由 太子 于 2011-11-4 22:21 编辑

#include "stdafx.h"
#include "math.h"
void main()

{
   int a, b, c;
   printf("input a number\n");
   scanf("%d", &a);              
   c = sqrt(a);                      // 求解1:输入a,单步调试后,a的开根值为639.。???
   for(b = 2; b <= c; b++)                             
   {

           if(a%b==0)  //a应对b取模          //求解2;这个循环里面c=639.。。b要循环到b=639才会跳出。
           {
                   break;
           }
   }
   if(b > c)                // 求解3; 这时这个b也是639,c也是639.。表达式不成立。
           printf("%d is a prime number\n", a);       //打印下面的eles,这个不是素数。。        
   else
           printf("%d is not a prime number\n", a);  // 但是我输入的101应该是个素数啊。。

}101是一个素数啊,我能调试出来,这程序貌似没有问题得,你记得加#include "math.h"
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-11-5 21:43:46 | 显示全部楼层
  1. #include <stdio.h>

  2. void main()

  3. {
  4.    int a, b, c;
  5.    printf("input a number\n");
  6.    scanf("%d", &a);              
  7.    c = sqrt(a);                                      
  8.    for(b = 2; b <= c; b++)                             
  9.    {
  10.            if(a % b == 0)                        
  11.            {
  12.                    break;
  13.            }
  14.    }
  15.    if(b > c)                                                
  16.            printf("%d is a prime number\n", a);            
  17.    else
  18.            printf("%d is not a prime number\n", a);   

  19. }     
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-11-5 21:44:42 | 显示全部楼层
其中是if(a%b)==0而不是if(a%c)==0
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-11-5 22:10:16 | 显示全部楼层
无比感谢各位。。现在晓得了。。原来差了个函数头文件。。
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-11-5 22:10:55 | 显示全部楼层
差了一个头文件。。。我想了6个小时都想不明白。。编译器也没提示。。我的头真的大了
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-11-5 22:15:00 | 显示全部楼层
掌心的呵护 发表于 2011-11-3 19:35
你用sqrt函数
就少了一个库函数#include

掌心的呵护。。。你总是在我有困难的时候帮助我解决问题。。真的非常感谢你这么照顾。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-11-5 23:34:33 | 显示全部楼层
zjxy2545 发表于 2011-11-5 22:15
掌心的呵护。。。你总是在我有困难的时候帮助我解决问题。。真的非常感谢你这么照顾。

同是论坛人,都是应该的哈
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-9 07:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表