题目 1029: [编程入门]自定义函数处理素数

发布时间 2023-04-06 21:28:22作者: ha_1007

题目描述

写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。

输入格式

一个数

输出格式

如果是素数输出prime 如果不是输出not prime

样例输入

97

样例输出

prime

解题思路以及注意事项
1.首先了解下素数;
素数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
(也就是只有1跟它本身能整除掉这个数)
2.我们可以利用for循环来判断输入的数字是否为素数。
3.注意,我们只需要循环到i<n,而不是i<=n,否则就会出错。
4.因为1不是素数,所以我们要从2开始判断。

#include<stdio.h>
int main()
{
    int n,i;
    scanf("%d",&n);
    for(i=2;i<n;i++)  //因为1不是素数,所以先从i=2开始循环。
    {               //而我们只需要循环到i<n
        if(n%i==0) //当我们输入的素数n能被i整除时,就判断n不为素数
        {
            printf("not prime\n");
            break;      //判断不为素数后就跳出循环
        }
    }
    if(n==i)     //当上面for语句 i 循环到 i 等于 n 时,
    {            //就可以判断n为素数了
            printf("prime\n");    
    }
    return 0;        
}

你可能喜欢

前10名 (Java代码)

浏览:666

C二级辅导-阶乘数列 (C语言代码)

浏览:238

A+B for Input-Output Practice (III) (C语言代码)

浏览:632

2006年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)

浏览:837

C语言训练-阶乘和数* (C++代码)(直接输出样例hhhh)

浏览:1132

解题思路以及注意事项
1.首先了解下素数;
素数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
(也就是只有1跟它本身能整除掉这个数)
2.我们可以利用for循环来判断输入的数字是否为素数。
3.注意,我们只需要循环到i<n,而不是i<=n,否则就会出错。
4.因为1不是素数,所以我们要从2开始判断。

#include<stdio.h>
int main()
{
    int n,i;
    scanf("%d",&n);
    for(i=2;i<n;i++)  //因为1不是素数,所以先从i=2开始循环。
    {               //而我们只需要循环到i<n
        if(n%i==0) //当我们输入的素数n能被i整除时,就判断n不为素数
        {
            printf("not prime\n");
            break;      //判断不为素数后就跳出循环
        }
    }
    if(n==i)     //当上面for语句 i 循环到 i 等于 n 时,
    {            //就可以判断n为素数了
            printf("prime\n");    
    }
    return 0;        
}

这是调用函数写法

#include<stdio.h>
    #include<math.h> 
    int fun(int n) 
    {
        if(n==2)    return 1;
        if(n==0 || n==1)    return 0;
        int i,s;
        s=sqrt(n);
    //这样写可以提高效率,减少循环,若一个数不是素数是合数的话那么一定就有两个自然数相乘得到
        for(i=2;i<=s;i++)
    //比如 n 不是素数,假设有两个因子 a ,b 其中必有一个大于sqrt(n) ,一个小于sqrt(n) 。即一个合数一定含有小于它平方根的质因子。
            if(n%i==0)    return 0;
        return 1;    
    }
    int main()
    {
        int n,i;
        scanf("%d",&n);
        if(fun(n))
            printf("prime");
        else
            printf("not prime");
        return 0;        
    }