题目 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; }
原题链接:[编程入门]自定义函数处理素数
解题思路以及注意事项
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; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步