Tag: 素数

用C打印复合数的最大素数因子

我正在解决一个谜题,我需要找到用户输入的复合数字的最大素数因子。 我想到了一些东西,并尝试过,但它无法检测到复合数量因素中最大的素因子。 我在下面添加我的代码,如果有人能帮我在这里找到最大的素数,我将不胜感激。 在这些因素中打印出来。 // Accept a composite number from user and print its largest prime factor. #include void main() { int i,j,b=2,c; printf(“\nEnter a composite number: “); scanf(“%d”, &c); printf(“Factors: “); for(i=1; i<=c/2; i++) { if(c%i==0) { printf("%d ", i); for(j=2; j 0) b = i; else if(i==3) b = 3; } } } […]

C Libgcrypt:无法使用libgcrypt检查数字是否为素数

我正在使用libgcrypt函数gcry_prime_check来测试数字3是否为素数。 事实certificate,根据我的function,3不是素数。 我究竟做错了什么? 这是我的代码 #include #include int main(void) { gcry_mpi_t cript_prime; gcry_error_t err; char buffer[8] = {0}; char number[8] = {0}; printf(“%s\n”, gcry_check_version ( NULL ) ); gcry_control( GCRYCTL_INIT_SECMEM, 16384, 0 ); cript_prime = gcry_mpi_new(16); strcpy(number,”3″); gcry_mpi_scan(&cript_prime,GCRYMPI_FMT_USG,number,sizeof(number),NULL); gcry_mpi_print(GCRYMPI_FMT_USG,buffer,sizeof(buffer),NULL,cript_prime); printf(“The number tested is: %s\n”,buffer); err = gcry_prime_check(cript_prime,4); if(err) { printf(“%s\n”,gcry_strerror(err)); } gcry_mpi_release(cript_prime); return 0; } 这是输出 […]

查找整数的所有因子的有效算法是什么?

我正在编写一个非常简单的程序来检查一个数字是否可以均匀地划分另一个数字: // use the divider squared to reduce iterations for(divider = 2; (divider * divider) <= number; divider++) if(number % divider == 0) print("%d can divided by %d\n", number, divider); 现在我很好奇是否可以通过找到数字的平方根并将其与分频器进行比较来完成任务。 但是,似乎sqrt()实际上无法提高效率。 如何在C中处理sqrt()以及如何提高sqrt()的效率? 此外,还有其他方法可以更高效地解决问题吗? 而且, number % divider == 0 用于测试分频器是否可以均匀划分数字,除了使用%之外还有更有效的方法进行测试吗?

一种在C中找到无符号长整数(32位宽)的最接近素数的方法?

我正在寻找一种方法来找到最接近的素数。 大于或小于,无关紧要,只是最接近(没有溢出,最好是。)至于速度,如果它可以在1GHz机器上大约50毫秒计算它(在软件中,在Linux内运行),我会欣喜若狂。

在C中获得2到100之间的所有素数

这是我的代码,它只能输出素数。 #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 …. 我做错了什么?

在C / C ++中生成2个限制之间的随机素数

是否有内置函数可以在C / C ++中的2个给定限制之间生成随机素数? 我想要一个可以生成100万到10亿之间随机素数的函数

你是一个素数

我对多年来寻找更好的素数识别器的问题感兴趣。 我意识到这是一个巨大的学术研究和研究领域 – 我对此感兴趣只是为了好玩。 这是我在C(下面)中首次尝试可能的解决方案。 我的问题是,你能否提出一个改进(没有引用网上的其他参考,我正在寻找实际的C代码)? 我想从中获得的是更好地理解确定这样的解决方案的性能复杂性。 我是否正确地得出结论,这个解决方案的复杂性是O(n ^ 2)? #include #include /* isprime */ /* Test if each number in the list from stdin is prime. */ /* Output will only print the prime numbers in the list. */ int main(int argc, char* argv[]) { int returnValue = 0; int i; int ceiling; int […]

为什么我得到’浮点exception:8′

我正在尝试计算0到100之间的所有素数,并且我得到一个浮点exception,有人可以告诉我为什么吗? (如果它有助于我使用gcc) #include int main(void) { int nums[100], i; for(i=0;i<100;i++) nums[i] = i; int j,k,l,z; for(i=1;i<100;i++) for(j=2;j<100;j++) if((nums[i] % nums[j]) == 0) { nums[j] = 0; } for(i=0;i<100;i++) if(nums[i] != 0) break; for(z=0;z<100;z++) { for(k=i;k<100;k++) for(l = (k+2);l < 100;l++) if((nums[k] % nums[l]) == 0) nums[k] = 0; } for(i=0;i<100;i++) if(nums[i] != 0) printf("%d,",nums[i]); printf("\n"); […]

寻找幸运数字的算法

我遇到了这个问题。如果数字的总和,以及数字的平方和是素数,则称为幸运数字。 A和B之间的幸运数字是多少? 1 <= A <= B <= 10 18 。 我试过这个。 首先,我生成了1之间的所有可能素数和可以通过求和平方得到的数字(81 * 18 = 1458)。 我在A和B中读取了通过对数字求和可以生成的最大数量。如果B是2位数字(最大数字是由99生成的18)。 对于1和最大数之间的每个素数。 我应用了整数分区算法。 对于每个可能的分区,我检查了它们的数字的平方和是否形成素数。 如果是这样,则生成该分区的可能排列,如果它们位于范围内,则它们是幸运数字。 这是实施: #include #include #include #include #include long long luckynumbers; int primelist[1500]; int checklucky(long long possible,long long a,long long b){ int prime =0; while(possible>0){ prime+=pow((possible%10),(float)2); possible/=10; } if(primelist[prime]) return 1; else return 0; } […]

关于如何使我的算法更快的建议

这是我在C中的代码来自项目-Euler的问题#3,在那里我必须找到最大的素数因子600851475143。 #include #include bool is_prime(long int number){ long int j; for (j=2; j1; factor–){ if (input%factor==0 && is_prime(factor)) { ans = factor; break; } } printf(“%d\n”, ans); system(“pause”); return 0; } 虽然它适用于小数字,但逐渐需要花费越来越多的时间来给出答案。 最后,对于600851475143,代码返回0,这显然是错误的。 有人可以帮忙吗? 非常感谢。