Welcome To Su1007.Home.|

ha_1007

园龄:4年3个月粉丝:1关注:0

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

题目描述

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

输入格式

一个数

输出格式

如果是素数输出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;
}

 

posted @   ha_1007  阅读(44)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起