| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 428 人关注过本帖
标题:素数问题,速度进~~~
只看楼主 加入收藏
c语言总虐我
Rank: 2
等 级:论坛游民
帖 子:112
专家分:66
注 册:2014-11-22
结帖率:91.67%
收藏
已结贴  问题点数:15 回复次数:3 
素数问题,速度进~~~
输入一个数,判断其是否为素数。。1.我想用(int)sqrt(n),可是加上后就运行不了2.有规定for里面不能加if吗?不能嵌套?还是怎样?老师说没说我也忘记了3.最最重要的能不能把printf放在后面的int main()里???我这样写总感觉跟没用函数一样。。。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int judge()
{
    int n,i,k,flag;
    printf("请输入这个数:");
    scanf("%d",&n);
        if(n==0||n==1)
            printf("不属于质数讨论范围");
        else if (n==2)
            printf("这个数是素数");
        flag=1;
        for(i=2;i<n;i++)
    {
        if(n%i==0)
            printf("这个数不是素数");
        else
            printf("这个数是素数");   
        return flag;
   
    }
}
    int main()
    {
        judge();

        system("pause");
        return 0;
    }
搜索更多相关主题的帖子: include include 
2014-11-24 15:26
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9024
专家分:54030
注 册:2011-1-18
收藏
得分:5 
程序代码:
#include <cstdio>

bool is_primenumber( unsigned n )
{
    if( n==0 || n==1 )
        return false;
    if( n == 2 )
        return true;

    for( unsigned i=2; i*i<=n; ++i )
    {
        if( n%i == 0 )
            return false;
    }
    return true;
}

int main()
{
    unsigned n;
    printf( "请输入这个数:" );
    scanf( "%u", &n );
    printf( "这个数%s是素数\n", is_primenumber(n)?"":"" );

    return 0;
}
2014-11-24 15:40
zkq19911112
Rank: 1
等 级:新手上路
帖 子:1
专家分:5
注 册:2014-11-24
收藏
得分:5 
新手一只,学的c++,请多指教~
1、sqrt()只有三种形式long double sqrt(long double);double sqrt(double);float sqrt(float);参数直接用int会被编译器提示重载函数调用不明确;
2、for里当然可以用if,但你这么写明显有多余(例如n/2==0不用再判断3~n-1是否整除了),可以用break再加一个bool标志判断实现;
3、printf()可以直接写在main()里,应该是包含在stdio.h里;
2014-11-24 22:24
sccer
Rank: 2
等 级:论坛游民
威 望:1
帖 子:15
专家分:14
注 册:2011-8-7
收藏
得分:5 
1.(int)sqrt(n)不明白在这里开方是想干嘛。抛开这个程序的功能,如果说是想强制把double转化为int应该是可以的,不过要是右值,就是在=的右边。
2.for里可以套if,没问题。
3.printf可以放在main里,通过你judge()的返回值来判断,然后printf()。
4.你的judge()函数有几个问题:
    1)如果不进入for循环,如n==0,n==1或n==2时,函数没有int返回值;
    2)关于flag的值,只有初值flag=1(注:这个flag=1没有在 if (n==2)里),就是flag恒等于1了……
    2)for只能执行一遍就会执行return,没法起到继续循环判断的作用;
    3)if(n%i==0)的else就说是素数,那岂不是说只要有一个不能整除n的数,n就是素数?
2014-11-25 21:36
快速回复:素数问题,速度进~~~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036602 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved