解题思路:
素数指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。
1.输入一个数number,若number为大于一的自然数,判断它是否为素数;
2.number为大于一的小数,不是素数;
3.number小于等于1,不是素数;
参考代码:
#include <stdio.h> int main() { double number; int i; scanf( "%lf", &number ); if ( number > 1 && number == (int) number ) //大于1的自然数 { for ( i = 2; i < number; i++ ) { if ( (int) number % i == 0 ) { printf( "not prime" ); break; } } if ( i == number ) printf( "prime" ); } if ( number>1&&(int) number != number ) //大于一的小数 printf( "not prime" ); if ( number <= 1 ) //小于等于一的数 printf( "not prime" ); return(0); }
0.0分
44 人评分
#include<stdio.h> #include<math.h> int fun(int n) { int i,leap=1,k; k=(int)sqrt(n); for(i=2;i<=k;i++) { if(n%i == 0) { leap=0; break; } } if(leap)return 1; else return 0; leap=1; } int main() { int a,c; while(1) { printf("please input a number:"); scanf("%d",&a); if(fun(a)!= 0) printf("prime\n"); else printf("not a prime\n"); } return 0; }
哪位大神来帮我改一下代码,运行结果正确,但是就是提交的时候答案错误 #include<stdio.h> int max(int i) { int a,b; a=1; b=0; while(a<=i) { if(i%a==0) { b=b+a; a++; } else a++; } if(b==i+1) return 0; else return 1; } main() { int n; scanf("%d",&n); if(max(n)==0) printf("prinme"); else printf("not prinme"); }
#include<stdio.h> int IsPrime(int n); int main() { int num; scanf("%d",&num); if (IsPrime(num))printf("prime\n"); else printf("not prime\n"); return 0; } int IsPrime(int n) { int i; if(n==2)return 1; else if(n<2||n%2==0)return 0; //除2以外的偶数都不是素数 else { for(i=3;i<=n/2;i+=2)//奇数中,能被整除的数的最大约数都不大于它的一半 ,(除了它本身),奇数只能被奇数整除 { if (n%i==0) return 0; } } return 1; }
Solotravel 2018-12-04 17:40:41 |
小于2的数也不是素数
qianwen 2018-12-29 16:10:38 |
赞
#include<stdio.h> #include<stdlib.h> int main() { int i,f,number; scanf("%d",&number); for(i=2;i<number;i++) { if (number%i==0) { printf("not prime"); exit(0); } else f=1; } if (f=1) printf("prime"); } 我这样写可以吗
Solotravel 2018-12-04 18:04:04 |
exit(0)换成break, 在main()函数结束前加 return 0;
Solotravel 2018-12-04 18:05:58 |
还有,f记得初始化为0,不然输入的数小于1时也不正确
我写了一个包含子函数的供大家参考,请多多指教 #include<stdio.h> int prime(int n, int i, int c) { if (n > 1 && n == (int)n) { c = 0; for (i = 2; i < n; i++) { if (n % i == 0) { c += 1; printf("not prime"); break; } } if (c == 0) printf("prime"); } return 0; } int main() { int n, i, c; scanf("%d", &n); return prime(n, i, c); } 链接:http://www.dotcpp.com/blog/8936.html
Christ 2018-07-28 16:25:36 |
突然发现不符合第一个if的数进去没结果……不过还是通过了
大佬,第20行为什么还要再判断i==number啊??剩下的不都是素数吗?
Manchester 2018-06-02 21:12:15 |
break 出循环后,不加判断的话直接输出prim就不对了