这是我的代码,它只能输出素数。
#include int prime(int n){ int j; for (j=2;j<=n/2;j++){ if((n%j)==0){ return 0; } else{ return 1; } } } void main(){ int i,p; for (i=2;i<=100;i++){ p=prime(i); if(p==1){ printf("%d n",i); } } }
结果是2,3,7,9,11,13,15 ….
不是2,3,5,7,11,13 ….
我做错了什么?
你可能想要:
int prime(int n){ int j; for (j=2;j<=n/2;j++) if((n%j)==0) return 0; return 1; }
素数是只能被两个数字整除的数字。 例如2,3,5,7,11等
int main() { int i,j,n=0; for(i=2;i<=100;i++) { for(j=1;j<=i;j++) { if(i%j==0) { n++; } } if(n==2) printf("%dn",i); n=0; } getch(); }
试试这个 :
int prime(int n){ int j; int isPrime = 1; for (j=2;j<=n/2;j++){ if((n%j)==0){ isPrime = 0; break; } } return isPrime; }
如果你试图找出一个给定数字的Prime数字(在你的情况下为2..100),建立一个素数表将加快这个过程:
注意:输入是顺序的以帮助构建素数表非常重要。
#include #include /* Building a prime table for fast look up * NOTE : Numbers should be input from 2 to n in a sequential pattern to help build prime table; */ # define PRIME_TAB_MAX 200 int prime_specific(int num) { static int primeTab[PRIME_TAB_MAX] = { 0, }; static int primeCount = 0; int check_limit ; unsigned int idx; if (num < 2) return 0; if (primeCount > 0) { check_limit = (int)sqrt(num); for (idx = 0; idx < primeCount && primeTab[idx] <= check_limit; idx++) { if (0 == (num % primeTab[idx])) { return 0; } } } else { for (idx = 2; idx <= num / 2; idx++) if (0 == (num % idx)) return 0; } if (primeCount < PRIME_TAB_MAX) { primeTab[primeCount++] = num; return 1; } else { fprintf(stderr, "nERROR: Prime Table is full"); return (-1); //Internal error } } int main(void) { unsigned int idx; int status ; for (idx = 2; idx <= 1000; idx++) { status = prime_specific(idx); switch (status) { case 1: fprintf(stderr, "%dn", idx); break; case 0: //Do nothing break; default: fprintf(stderr, "nERROR:Internal Error"); return (-1); } } return 0; }
码:
#include int main () { /* local variable definition */ int i, j; for(i=2; i<100; i++) { for(j=2; j <= (i/j); j++) if(!(i%j)) break; // if factor found, not prime if(j > (i/j)) printf("%d is primen", i); } return 0; }
以上就是c/c++开发分享在C中获得2到100之间的所有素数相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/549319.html