每日编程中遇到任何疑问、意见、建议请公众号留言或加入每日编程群聊739635399
输入几个数,把素数找出,由大到小排序输出。
输入样例:
6 11 5 10 13 35 9
输出样例:
3 5 11 13
解决方法:
(1)代码实现:
#include <stdio.h>
int main()
{
int a[100];
int i = 0;
char x;
while (x != '\n') //遇见输入换行符时跳出循环
{
scanf("%d", &a[i]); //scanf函数遇到空格就结束输入了
x = getchar();
++i;
}
int j = 0, k = 0, temp = 0, s = 0;
int b[i]; //这个数组用于存素数
for (j = 0; j < i; ++j)
{
for (k = 2; k < a[j]; ++k) //把a[j]从2开始至 a[j]-1 除一遍,如果都除不尽,则说明是素数
{
temp = a[j] / k;
if (a[j] == k * temp)
{
break;
}
}
if (k == a[j] && a[j] > 1)
{
b[s] = a[j];
++s;
}
}
/*接下来是排序部分,采用冒泡排序*/
int flag = 0;
temp = b[0];
for (i = 0; i < s; ++i)
{
flag = 0;
for (j = 1; j < s - i; ++j)
{
if (b[j - 1] > b[j])
{
temp = b[j - 1];
b[j - 1] = b[j];
b[j] = temp;
flag = 1;
}
}
if (flag == 0)
{
break;
}
}
for (i = 0; i < s; ++i)
{
printf("%d ", b[i]);
}
return 0;
}
输入一个整数n,输出该整数中重复的数字,如果没有重复出现的数字则输出 No repeat number!
输入样例:
2312626
输出样例:
2 6