输入数字,0结束,判断输入的数字中的素数 clc; %清空命令行窗口的数据 clear; %清除工作空间的变量 k = ; n = ; %素数的个数 zzs(k) = input('请输入正整数: '); break; end flag = ; %判断是否为素数 : sqrt(zzs(k)) %因子从2开始至该数的平方根 %除尽因子,就不为素数 disp(['不是素数',yz]) flag = ; break; end end | zzs(k) == %2也算素数 n = n + ; sus(n
编程之美2.5:寻找最大的K个数 引申:寻找第k大的数: 方法一: // 选择第k大的数(通过改进快速排序来实现) public static void SelectShort(int[] array, int low, int high, int k, out int value) { int i = low; int j = high; int tempItem = array[low]; value = int.MinValue; while (low < high) { while (a
int main() { int input = 0; scanf_s("%d",&input); if (input < 2) { printf("wrong input"); return 0; } for (int i = 2; i < input; i++) { if (input % i == 0)//能整除说明不是素数 { printf("not prime");//不是素数就不要循环下去了 return 0; }
有若干个互不相等的无序的数,怎么选出其中最大的k个数. 我自己的方案:因为学过找第k大数的O(N)算法,所以第一反应就是找第K大的数.然后把所有大于等于第k大的数取出来. 写这个知道算法的代码都花了2个多小时,反思,太慢了. 注意边界条件,不要混混沌沌的. /************我自己的解法*****************/ //选择数组a[N]中最大的第k个数 int Select(int * a, int N, int k) { if(k > N || a == NULL) { cou